Amazon SageMaker ノートブックインスタンスを作成しました。Apache Livy を使って、それを Apache Spark Amazon EMR クラスターに接続しました。AWS Glue データカタログで、データベースとテーブルを表示することができます。ところが、データを照会しようとすると、次のようなエラーメッセージが表示されます。

An error occurred while calling o647.showString. : java.lang.AssertionError: assertion failed: No plan for HiveTableRelation 'mydatabase'.'cloudfront_logs', org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe

Amazon EMR リリースバージョン 5.10.0 〜 5.17.0 では、Livy を使用するときに HiveContext はデフォルトでは有効になりません。エラーを解決するには、Livy で HiveContext を有効にします。

長時間実行しているクラスターや新しいクラスターを起動するときに、Livy で HiveContext を有効にできます。長時間実行しているクラスターの場合:

1.    SSH を使用してマスターノードに接続します。例:

ssh -i ~/mykeypair.pem hadoop@master-public-DNS

2.    livy.conf ファイルがあるディレクトリに移動します。

cd /etc/livy/conf/

3.    livy.conf ファイルをバックアップします。

sudo cp livy.conf livy.bk

4.    希望するテキストエディタで livy.conf ファイルを開きます。例:

sudo vim livy.conf

5.    次の行を livy.conf に追加し、ファイルを保存します。

livy.repl.enable-hive-context true

6.    以下のコマンドを実行して、livy-server を再起動します。

sudo stop livy-server
sudo start livy-server

新しいクラスターの場合:

次の設定オブジェクトを使用して、新しいクラスターを起動するときに livy-conf に対して HiveContext を有効にします。

[
  {
    "Classification": "livy-conf",
    "Properties": {
      "livy.repl.enable-hive-context": "true"
    }
  }
]

Amazon SageMaker ノートブックで PySpark のクエリ機能をテストする

1.    ノートブックで Spark コンテキストを作成します。

sc

2.    HiveContext をインポートし、テーブルを確認します。例:

from pyspark.sql import HiveContext
hive_context = HiveContext(sc)
cl_logs = hive_context.table("mydatabase.cloudfront_logs")
cl_logs.show()

3.    簡単なクエリを実行して、java.lang.AssertionError エラーが解決していることを確認します。例:

result = hive_context.sql('SELECT * FROM mydatabase.cloudfront_logs WHERE method="GET" AND status=200 LIMIT 5')
result.show()

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2019 年 2 月 12 日