3

ORC ファイルを含むディレクトリがあります。以下のコードを使用して DataFrame を作成しています

var data = sqlContext.sql("SELECT * FROM orc.`/directory/containing/orc/files`");

このスキーマでデータフレームを返します

[_col0: int, _col1: bigint]

期待されるスキーマはどこにありますか

[scan_nbr: int, visit_nbr: bigint]

parquet 形式のファイルに対してクエリを実行すると、正しいスキーマが得られます。

構成が不足していますか?

詳細を追加する

これは、Hortonworks ディストリビューション HDP 2.4.2 (Spark 1.6.1、Hadoop 2.7.1、Hive 1.2.1) です。

HDP のデフォルト設定は変更していませんが、これは Hadoop のプレーン バニラ バージョンとまったく同じではありません。

データは、単純な CTAS である上流の Hive ジョブによって書き込まれます (CREATE TABLE サンプル STORED AS ORC as SELECT ...)。

最新の 2.0.0 ハイブを使用して CTAS によって生成されたファイルでこれをテストしました。orc ファイルの列名が保持されます。

4

5 に答える 5

7

問題は、このバグHIVE-4243がある Hive バージョン (1.2.1) です。

これは 2.0.0 で修正されました。

于 2016-10-10T12:44:46.527 に答える
0

以下を使用できます。

val df = hiveContext.read.table("tableName")

あなたのdf.schemaordf.columnsは実際の列名を与えます。

于 2017-08-10T06:11:48.617 に答える