jq、hadoop:从文件获取命令

l3zydbqr  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(320)

我一直很享受 JQ (文件)。
twitter的公共api提供了格式良好的json文件。我可以访问大量的hadoop集群。我决定去那里,而不是把它们装进去 Pig 使用 Elephantbird ,试用 JQ 在mapper流看看它是否更快。
我的最后一个问题是:

nohup hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.5.1.jar\
    -files $HOME/bin/jq \
    -D mapreduce.map.memory.mb=2048\
    -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
    -mapper "./jq --raw-output 'select((.lang == \"en\") and (.entities.hashtags | length > 0)) | .entities.hashtags[] as \$tags | [.id_str, .user.id_str, .created_at, \$tags.text] | @csv'" \
    -reducer NONE \
    -input /path/to/input/*.json.gz \
    -output /path/to/output \
    &

我正在分发我的本地 jq 可执行到每个计算节点,并告诉他们运行我的命令与它一起为他们的 stdin 溪流。
这个查询足够长,以至于我开始在中引用和格式化问题 bash 以及 JQ .
我希望我能写下这样的话:

nohup hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.5.1.jar\
        -files $HOME/bin/jq,$PROJECT_DIR/cmd.jq \
        -D mapreduce.map.memory.mb=2048\
        -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
        -mapper "./jq --raw-output --run-cmd-file=cmd.jq" \
        -reducer NONE \
        -input /path/to/input/*.json.gz \
        -output /path/to/output \
        &

我可以把我的命令放在一个文件中,把它发送到计算节点并用一个选项调用它。

wi3ka0sx

wi3ka0sx1#

你好像错过了比赛 -f FILE 选择!

相关问题