2

複数の avro ファイルがあり、各ファイルには STRING が含まれています。各 avro ファイルは 1 つの行です。単一のディレクトリにあるすべての avro ファイルを消費するハイブ テーブルを作成するにはどうすればよいですか。各ファイルには大きな番号が含まれているため、関連付けることができる json の種類のスキーマもありません。schema less と言うのは間違っているかもしれません。しかし、ハイブがこのデータを理解する方法が見つかりません。これは非常に単純かもしれませんが、成功せずにさまざまな方法を試したので迷っています。json スキーマを avro uri として指すテーブルを作成しましたが、ここではそうではありません。より多くのコンテキストファイルについては、crunch api を使用して書き込まれました

final Path outcomesVersionPath = ...
pipeline.write(fruit.keys(), To.avroFile(outcomesVersionPath));

テーブルを作成するがデータを正しく読み取らない次のクエリを試しました

CREATE EXTERNAL TABLE test_table
ROW FORMAT
SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///somePath/directory_with_Ids'
4

2 に答える 2

0

データ セットにフィールドが 1 つしかない場合は、DDL を次のように変更することで、1 つの列 (または任意の名前)STRINGを使用して Hive から読み取ることができます。data

CREATE EXTERNAL TABLE test_table
(data STRING)
ROW FORMAT
SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///somePath/directory_with_Ids'

そして、次のようにデータを読み取ります。

SELECT data FROM test_table;
于 2015-03-09T02:26:15.803 に答える