2016-08-19 1 views
1

以下のコードは、scalaを使用してHDFSに書き込まれた方法です。このデータを照会するHiveテーブルを作成するHQL構文は何ですか?databricksを使用して記述されたAVROファイルからHive Externalテーブルを作成するにはどうすればよいですか?

import com.databricks.spark.avro._ 
val path = "/user/myself/avrodata" 
dataFrame.write.avro(path) 

例Iはavro.schema.literalスキーマまたは実際アブロスキーマにavro.schema.urlを説明するために提供する必要が見つけます。スパーク・シェルで

私はこれを読むために行う必要があるでしょう、すべては次のとおりです。

scala> import com.databricks.spark.avro._ 
scala> val df = sqlContext.read.avro("/user/myself/avrodata") 
scala> df.show() 
+0

*スパーク・アブロソースコードの状態からのコメントは、「スキーマの進化はまだサポートされていません。ここでは、単一のランダムサンプルファイルを選択する**全体のデータセットのスキーマを把握**」* (https://github.com/databricks/spark-avro/blob/master/src/main/scala/com/databricks/spark/avro/DefaultSource.scala)。 –

+0

ハイブはこのようには動作しません。CREATE時には** AVROスキーマを明示的に**必要とします。しかし、ドキュメンテーション(https://cwiki.apache.org/confluence/display/Hive/AvroSerDe)には、これを行う方法が2つあります:AVROスキーマへのリンク(ローカルファイル/ URLで利用可能)、あたかもそれがテキストファイルであるかのように列を列挙し、ハイブがそのSQLスキーマからAVROスキーマを推測できるようにします。 –

答えて

0

だから私はこの仕事を得るためにだまさ。基本的に私は一時テーブルを作成し、HQLを使用してtempテーブルのデータを作成して挿入しました。このメソッドは、一時テーブルのメタデータを使用し、作成して移入するavroターゲットテーブルを作成します。データフレームがそのスキーマから一時テーブルを作成できる場合、なぜテーブルをavroとして保存できないのですか?

dataFrame.registerTempTable("my_tmp_table") 
sqlContext.sql(s"create table ${schema}.${tableName} stored as avro as select * from ${tmptbl}") 
関連する問題