0

Spark Context オブジェクトを作成し、Hadoop サーバー (ローカルではない) のテキスト ファイルからテキストを取得しようとしましたが、取得できました。

Hive テーブル (スタンドアロン マシン、クラスター上にある) を取得しようとしても実行できませんでした。また、Hive テーブルを作成すると、metastore_db でローカルに作成されます。

objHiveContext.sql("テーブル yahoo_orc_table (date STRING, open_price FLOAT, high_price FLOAT, low_price FLOAT, close_price FLOAT, volume INT, adj_price FLOAT) を orc として保存")

メタストアを設定してみた

objHiveContext.setConf("hive.metastore.warehouse.dir", "hdfs://ServerIP:HiveportNum/apps/hive/warehouse")

&& また objHiveContext.hql("SET hive.metastore.warehouse.dir=hdfs://serverIp:portNumber/apps/hive/warehouse")

hive-site xml を spark マシンの conf フォルダーに配置しました。

hive-site.xml にアクセスしてその xml からメタストア情報を取得するように scala アプリケーションを作成する方法と、Hive-site.xml をどこに配置する必要があるか

ClassPath に追加することが提案されているすべての場所でアプリケーションに配置しました。追加したところ、 mypom.xml ファイルのすぐ上にあることがわかりますが、それでも私の scala アプリはローカル モードです。

テーブル (yahoo_orc_table ) は D:\user\hive\warehouse にローカルに作成されます

4

2 に答える 2

1

あるべき唯一の場所は、spark conf ディレクトリにあります。そこに配置してもまだ機能しない場合は、問題が別の場所にあり、おそらく hive-site.xml の内容にあることを意味します。

于 2015-12-21T12:29:03.477 に答える
0

この問題は、hive-site xml ファイルを spark マシンの conf フォルダーに配置した後、spark2 で解決されました。

  import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.master("local[2]")
.appName("interfacing spark sql to hive metastore without configuration file")
.config("hive.metastore.uris", "thrift://host:port") // replace with your hivemetastore service's thrift url
.enableHiveSupport() // don't forget to enable hive support
.getOrCreate()

spark.sql("create table yahoo_orc_table (date STRING, open_price FLOAT, high_price FLOAT, low_price FLOAT, close_price FLOAT, volume INT, adj_price FLOAT) stored as orc")

このコードは、クラスターのハイブにテーブル「yahoo_orc_table」を作成します。

于 2017-09-07T09:57:55.040 に答える