0
Pysparkからリモートハイブサーバに格納されているデータを読み書きしようとしています。私は、この例では、次のとおりです。Pyspark:リモートハイブサーバでデータを選択
from os.path import expanduser, join, abspath
from pyspark.sql import SparkSession
from pyspark.sql import Row
# warehouse_location points to the default location for managed databases and tables
warehouse_location = 'hdfs://quickstart.cloudera:8020/user/hive/warehouse'
spark = SparkSession \
.builder \
.appName("Python Spark SQL Hive integration example") \
.config("spark.sql.warehouse.dir", warehouse_location) \
.enableHiveSupport() \
.getOrCreate()
例が倉庫に新しいテーブルを作成する方法を示しています。
# spark is an existing SparkSession
spark.sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING) USING hive")
spark.sql("LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src")
# Queries are expressed in HiveQL
spark.sql("SELECT * FROM src").show()
しかし、私はmytest.db
で作成された既存の田部iris
にアクセスする必要があるので、テーブルの場所は
table_path = warehouse_location + '/mytest.db/iris`
既存のテーブルの選択方法は?上記のコードで倉庫場所としてhdfs://quickstart.cloudera:8020/user/hive/warehouse
を使用してしようとしたとき
hdfs://quickstart.cloudera:8020/user/hive/warehouse/mytest.db/iris
:
http://test.mysite.net:8888/metastore/table/mytest/iris
及びテーブル位置URL:
更新
Iは、メタストアのURLを有する
spark.sql("use mytest")
は、私は例外を取得:
raise AnalysisException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.AnalysisException: "Database 'mytest' not found;"
iris
から選択するための正しいURLでしょうか?
おかげで、作業するデータベースを指定を使用してテーブルを直接呼び出すことができます!私の質問への更新を見てください。私は何を使用するURLを把握することはできません、助けてください。 – dokondr