直接从HDFS读取文件,而不将其复制到本地文件系统。不过,我将结果复制到本地文件系统。
hduser@ubuntu:/usr/local/hadoop$mkdir/tmp/gutenberg-output bin/hadoop dfs-getmerge/user/hduser/gutenberg-output/tmp/gutenberg-output deprecated:不推荐使用此脚本执行hdfs命令。而是对其使用hdfs命令。
20/11/17 21:58:02警告util.nativeCodeLoader:无法为您的平台加载本机Hadoop库...在适用的地方使用内置Java类,linux的答案是getmerge:`/tmp/gutenberg-output':是目录,如何修复错误?
您似乎试图输出这个特定的HDFS目录本身,而不是其中的内容。
但是,HDFS的好处是它遵循了几个基于UNIX的命令行约定,因此您可以通过使用cat
命令来读取该目录下文件的内容(您应该有作业的输出),如下所示:
hadoop fs -cat output_directory/part-r-00000
其中,output_directory
是存储所需输出的目录的名称,part-r-00000
是带有作业结果的文件的名称(或名为part-r-00000
、part-r-00001
的一组文件中的第一个,取决于您可能定义的作业还原器的数量)。
如果上面的命令抛出一个错误,即不存在具有该名称的文件,那么可能是您的作业在设置输出键-值
对之前偶然发现了一个问题,或者您的Hadoop版本较旧,输出文件的名称类似于part-00000
、part-00001
。
作为一个示例,下面屏幕截图中的以下输出来自一个已执行作业,该作业的输出存储在HDFS的wc_out
目录下:
{“type”:“record”、“name”:“twitter_schema”、“namespace”:“com.miguno.avro”、“fields”:[{“name”:“username”、“type”:“string”、“doc”:“Twitter.com上的用户帐户名称”}、{“name”:“tweet”、“type”:“string”、“doc”:“用户的Twitter消息内容”}
问题内容: 我目前正在使用Python处理数据流 模板 ,我想访问作业ID并将其保存到特定的Firestore文档。 是否可以访问作业ID? 我在文档中找不到与此有关的任何内容。 问题答案: 您可以通过在管道中进行调用来实现(请参见下面的完整代码)。一种可能性是始终使用相同的作业名称来调用模板,这很有意义,否则可以将作业前缀作为运行时参数传递。使用正则表达式解析作业列表,以查看该作业是否包含名称前
我是使用AWS Glue的新手,我不明白ETL作业是如何收集数据的。我使用爬虫从S3存储桶中的一些文件生成我的表模式,并检查了ETL作业中的自动生成脚本,如下所示(略有修改): 当我运行此作业时,它成功地从我的爬虫用于生成表模式的存储桶中获取我的数据,并按预期将数据放入我的目标s3存储桶中。 我的问题是:可以说,我在这个脚本中看不到任何地方“加载”了数据。我知道我把它指向了爬虫程序生成的表,但从这
我正在尝试将MapReduce作业中的日志写入HDFS。我使用的是Apache Flume NG。 我的环境: Java 6 日志4j 1.2.16 Apache Hadoop 2.3.0 Apache水槽1.4.0 问题#1 我已经创建了简单的MapReduce作业作为Maven项目,并且在我的类中使用了 作业完成后,我可以在系统日志文件中看到我的日志。 我想创建自己的log4j配置并将日志写入
我正在使用Apache Flink RabbitMQ堆栈。我知道有机会手动触发保存点并从中还原作业,但问题是Flink会在成功的检查点之后确认消息,如果要使保存点和还原状态为,则会丢失上次成功的保存点和上次成功的检查点之间的所有数据。有没有办法从检查点恢复作业?这将解决在不可重放数据源(如rabbitmq)的情况下丢失数据的问题。顺便说一句,如果我们有检查点及其所有开销,为什么不让用户使用它们呢?
我已经成功地完成了在Amazon EMR上的工作,现在我想将结果从复制到,但是我遇到了一些问题 这是代码(--steps) 这是日志: