我想在Python上的mapreduce中读取ORC文件。我尝试运行它:
hadoop jar /usr/lib/hadoop/lib/hadoop-streaming-2.6.0.2.2.6.0-2800.jar
-file /hdfs/price/mymapper.py
-mapper '/usr/local/anaconda/bin/python mymapper.py'
-file /hdfs/price/myreducer.py
-reducer '/usr/local/anaconda/bin/python myreducer.py'
-input /user/hive/orcfiles/*
-libjars /usr/hdp/2.2.6.0-2800/hive/lib/hive-exec.jar
-inputformat org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
-numReduceTasks 1
-output /user/hive/output
但我得到错误:
-inputformat : class not found : org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
我发现了一个类似的问题OrcNewInputformat as a inputformat for hadoop streaming但答案不明确
请举例说明如何在hadoop流媒体中正确读取ORC文件。
答案 0 :(得分:0)
以下是我使用ORC分区Hive表作为输入的示例之一:
hadoop jar /usr/hdp/2.2.4.12-1/hadoop-mapreduce/hadoop-streaming-2.6.0.2.2.4.12-1.jar \
-libjars /usr/hdp/current/hive-client/lib/hive-exec.jar \
-Dmapreduce.task.timeout=0 -Dmapred.reduce.tasks=1 \
-Dmapreduce.job.queuename=default \
-file RStreamMapper.R RStreamReducer2.R \
-mapper "Rscript RStreamMapper.R" -reducer "Rscript RStreamReducer2.R" \
-input /hive/warehouse/asv.db/rtd_430304_fnl2 \
-output /user/Abhi/MRExample/Output \
-inputformat org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
-outputformat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
此处/apps/hive/warehouse/asv.db/rtd_430304_fnl2
是HIVE表背景ORC数据存储位置的路径。休息我需要为流媒体和HIVE提供合适的罐子。
PS:请不要分散我对/usr/R64/bin/Rscript
的使用的注意力,因为代码理想情况下应该在没有传递可执行路径的情况下工作。我只是给出了这条路径,因为我的环境默认R可执行文件是32位,而前面提到的路径主机是64位R。