2016-08-10 8 views
0

2つのdiffソースから2つのデータセットをHiveにスクープします。私は、列の上の文字列のインデックスのようないくつかの分析機能を実行するためにHiveContextによってpysparkにこの表を使用しHadoopでpysparkを実行しているときにファイル例外ではない

create table db.table as select table 1 union select table 2 

を使用してハイブ内の2つのテーブルの和を作成しました。

hc=HiveContext(sc) 
data = hc.sql("select * from db.table") 
from pyspark.sql import SQLContext, Row, HiveContext 
from pyspark.ml.feature import StringIndexer 
indexer = StringIndexer(inputCol="col_cat", outputCol="cat_indexed") 
indexed=indexer.fit(data).transform(data) 

私はだから私はHDFS

hadoop fs -ls /hive/db/table 

に行き、私はテーブルを見つけ、次のエラー

py4j.protocol.Py4JJavaError: An error occurred while calling o63.fit. 
: java.io.IOException: Not a file: 

を取得しかし、私はここでいただきました!問題を知りません。 私は外部表を作成しなかったので、私はそれを感じる。前回は外部なしで動いた。

+0

'data.first()'は何もしていませんか? – ShuaiYuan

+0

いいえ、同じエラーが表示されます –

+0

sparkで[テーブルを読み込み](http://spark.apache.org/docs/1.6.2/sql-programming-guide.html#hive-tables)しましたか? – ShuaiYuan

答えて

0

OKは、私は、私が

Hadoop fs -mv /hive/db/table/file /hive/db/file 

を行うことによって

/hive/db/file 

/hive/db/table/file 

からディレクトリ すなわちからファイルを移動し、今では動作しますが、修正を見つけました問題は、Hiveの組合がテーブル間にパーティションを作成し、それによって追加のディレクトリを作成したことですファイルを保存します。 Sparkがそれらにアクセスしようとしたとき、それはディレクトリを指していました。だから私は、ファイルの場所を火花が指していた場所に変更した。

関連する問題