0

現在、Hadoop テキスト ファイルから Elasticsearch にデータを自動的に追加する方法を見つけようとしています。HIVE v0.11、Hadoop v2.0.5、Elasticsearch 1.7.1、elasticsearch-hadoop v2.1.0 を実行しています。ファイルはパス /tmp/test-log/apache2log の下のさまざまなサブフォルダーに保存され、年/月/日という名前が付けられています。作成は、Hadoop からデータを取得する際に機能します。

CREATE EXTERNAL TABLE apache2log(
userIP STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
thread STRING,
link STRING,
callerInformation STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED by '|'
LOCATION '/tmp/test-log/apache2log';

しかし、このデータをelasticsearchに挿入するテーブルを作成しようとすると、作成は正常に機能しますが、テーブルは空です。次のコマンドを試しました:

CREATE EXTERNAL TABLE apache2log(
userIP STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
thread STRING,
link STRING,
callerInformation STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED by '|'
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
LOCATION '/tmp/test-log/apache2log'
TBLPROPERTIES(
'es.nodes'='1.2.3.4', 
'es.resource'='sam3/apache2',
'es.net.proxy.http.use.system.props'='false');

デフォルト設定から変更された変数:

SET hive.input.dir.recursive=true;
SET hive.mapred.supports.subdirectories = true;
SET hive.supports.subdirectories=true;
SET mapred.input.dir.recursive = true;
SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;

ADD JAR /usr/lib/gphd/hive-0.11.0_gphd_2_1_1_0/lib/elasticsearch-hadoop-2.1.0.jar;

Elasticsearch 用に 2 番目のテーブルを作成し、INSERT を使用してデータを追加する可能性があることはわかっています。ただし、プロセスを自動化する必要があるため、ファイルに追加されたデータは、hadoop に到着したときにテーブルに挿入する必要があります。

4

1 に答える 1

0

これは仕方がないと思います。そうであれば、別の外部テーブルでテーブルのストレージ ハンドラを定義する必要はありません。

于 2015-11-25T13:10:35.740 に答える