0

我无法在 cloudera cdh3 中将数据从 pig 加载到 hbase。它在我转储数据时向我显示数据,但是当我尝试使用 store 命令将数据从 pig 放入 hbase 时,它​​能够找到表并启动 mapreduce 任务。但最终它显示以下错误消息->

未能从“test/NYSE_daily_prices_Q.csv”读取数据

最后

2015-02-16 11:29:44,266 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 失败!2015-02-16 11:29:44,268 [main] 错误 org.apache.pig.tools.grunt.GruntParser - 错误 2999:意外的内部错误。行键无效日志文件中的详细信息:/home/cloudera/pig_1424114902913.log

这是我使用的代码。有人可以帮我解决这个问题。

data = LOAD '/test/NYSE_daily_prices_Q.csv' USING PigStorage(',') AS (exchange:chararray,symbol:chararray,date:chararray,stock_price_open:float, stock_price_high:float,stock_price_low:float,stock_price_close:float,stock_volume: int,stock_price_adj_close:float);

转储数据;

将数据存储到 'hbase://NYStockDetails' 使用 org.apache.pig.backend.hadoop.hbase.HBaseStorage('info:exchange info:symbol info:date info:stock_price_open info:stock_price_high info:stock_price_low info:stock_price_close info:stock_volume信息:stock_price_adj_close');

4

1 回答 1

1

当您在本地执行命令时(这就是我假设您说转储数据时的意思),您的命令LOAD '/test/NYSE_daily_prices_Q.csv'能够指向本地文件系统上的特定文件。

当您在附加了 HBase 导出的情况下执行相同的命令时,将启动仅映射 MapReduce 作业。映射器将在集群上的一个随机节点上运行,因此不一定可以访问NYSE_daily_prices_Q.csv我认为仅存储在一个节点上的本地。因此,当它尝试加载到 HBase 时会出现错误。

解决方案是将此文件添加到 HDFS,然后从那里加载它,即LOAD 'hdfs://my-hdfs-location/test/NYSE_daily_prices_Q.csv'.

于 2015-02-17T22:12:47.927 回答