我正在尝试编写一个简单的 map only hadoop streaming job 从 hdfs 读取数据并将其推送到 vertica。
我写了几个shell脚本如下
加载.sh
hadoop jar hadoop-streaming-2.7.3.2.5.3.0-37.jar -input $INPUT_DIR -mapper /user/oozie/adhoc_data_load/scripts/export.sh -output $OUTPUT_DIR
导出.sh
./vsql -c "copy $TABLE from stdin delimiter E'\t' direct null '\\N';" -U $DBUSER -w $DBPWD -h $DBHOST -p $DBPORT
工作流程:
<action name="loadToVertica">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>loadVertica.sh</exec>
<argument>${STREAMING_JAR_PATH}</argument>
<argument>${nameNode}/user/oozie/optus_adhoc_data/${exportDataDate}</argument>
<argument>${TABLE_NAME_VERTICA}</argument>
<argument>${dbHost}</argument>
<argument>${dbName}</argument>
<argument>${dbPassword}</argument>
<argument>${dbPort}</argument>
<argument>${nameNode}/user/oozie/optus_adhoc_data/output/${exportDataDate}</argument>
<argument>vsql,export.sh</argument>
<file>${nameNode}/user/oozie/adhoc_data_load/scripts/loadVertica.sh#loadVertica.sh</file>
<file>${wfsBasePath}/libs/${STREAMING_JAR_PATH}#${STREAMING_JAR_PATH}</file>
<file>${wfsBasePath}/config/vsql#vsql</file>
<file>${wfsBasePath}/scripts/export.sh#export.sh</file>
<capture-output/>
</shell>
<ok to="end"/>
<error to="end"/>
</action>
在 Oozie 用户出现以下异常的情况下运行它:
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=yarn, access=WRITE, inode="/user/yarn/.staging":hdfs:hdfs:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319)
解决方法:
在工作流中添加:
HADOOP_USER_NAME=${wf:user()}
最佳答案
可以通过在 Workflow.xml 中添加以下内容来解决这个问题
HADOOP_USER_NAME=${wf:user()}
关于hadoop - Oozie Hadoop 流媒体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44498025/
其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
目录:一、简介二、HQL的执行流程三、索引四、索引案例五、Hive常用DDL操作六、Hive常用DML操作七、查询结果插入到表八、更新和删除操作九、查询结果写出到文件系统十、HiveCLI和Beeline命令行的基本使用十一、Hive配置一、简介Hive是一个构建在Hadoop之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类SQL查询功能,用于查询的SQL语句会被转化为MapReduce作业,然后提交到Hadoop上运行。特点:简单、容易上手(提供了类似sql的查询语言hql),使得精通sql但是不了解Java编程的人也能很好地进行大数据分析;灵活性高,可以自定义用户函数(UDF)和
我正在从Rails3.2进行流式下载(CSV),并且遇到初始页面请求需要很长时间的问题。以下Controller代码说明了我的问题:self.response_body=Enumerator.newdo|y|10_000_000.timesdoy有了上面的内容,响应看起来确实像是流式传输(来自可以支持它的服务器......在我的例子中是Unicorn)。也就是说,在它开始流式传输之前,它挂起的时间比我想要的要长得多。如果我将其更改为以下内容,它会启动得更快:self.response_body=Enumerator.newdo|y|1000.timesdoy我的理解是响应应该从循环的第
云计算实验中要求我们在Linux系统安装Hadoop,故来做一个简单的记录。· 注:我的操作系统环境是Ubuntu-20.04.3,安装的JDK版本为jdk1.8.0_301,安装的Hadoop版本为hadoop2.7.1。(不确定其他版本是否会出现版本兼容问题)Hadoop安装步骤如下: 一、更新apt和安装vim编辑器 二、配置本机无密码登录SSH 三、安装JAVA环境 四、下载安装Hadoop 五、伪分布式搭建一、更新apt和安装vim编辑器1、更新aptsudoapt-getupdate2、安装vim
一、设置免密登录1、系统偏好设置-----共享----勾选远程登录,所有用户2、打开终端,输入命令ssh-keygen-trsa,一直回车即可2.查看生成的公钥和私钥 cd~/.ssh ls会看到~/.ssh目录下有两个文件:①私钥:id_rsa②公钥:id_rsa.pub3.将公钥内容写入到~/.ssh/authorized_keys中 cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys4.测试在terminal终端输入 sshlocalhost如果出现以下询问输入yes,不需要输入密码就能登录,说明配置成功Areyousureyouw
我使用Kafka流媒体从KAFKA主题中消费。(KafkaDirect流)此主题中的数据每5分钟从另一个来源到达。现在,我需要处理每5分钟后到达的数据,并将其转换为SparkDataFrame。现在,流是数据的连续流。我的问题是,如何确定我已经完成了在Kafka主题中加载的第一组数据的阅读?(以便我可以将其转换为数据框架并开始我的工作)我知道我可以提及某个数字的批处理间隔(在JavastreamingContext中),但是即使那样,我也永远无法确定源将数据将数据推到主题的时间。欢迎任何建议。看答案如果我正确理解您的问题,您希望不创建批处理,直到阅读5分钟的所有数据。开箱即用的Spark不会提
我正在尝试将图像上传到PingFM。他们的documentation说:media–base64encodedmediadata.我可以通过URL访问此图像。我试过(几乎猜到了)这个:ActiveSupport::Base64.encode64(open("http://image.com/img.jpg"))但是我得到这个错误:TypeError:can'tconvertTempfileintoStringfrom/usr/lib/ruby/1.8/base64.rb:97:in`pack'from/usr/lib/ruby/1.8/base64.rb:97:in`encode64'
MediaSourceExtensions和WebRTC之间的根本区别是什么?请允许我表达一下自己的理解。WebRTC包括一个RTCPeerConnection,它处理从媒体流中获取流并将它们传递到一个协议(protocol)中,以便流式传输到应用程序的连接对等点。似乎在WebRTC的幕后抽象了许多更大的问题,如编解码器和转码。这是一个正确的评估吗?MediaSourceExtensions适合什么地方?我的知识有限,但看过开发人员运行自适应流媒体的示例。MSE是否只处理来自您服务器的流?帮助将不胜感激。 最佳答案 不幸的是,这些与
我有一个带有输入字段的页面。当页面处于媒体类型打印时,我想隐藏所有0值文本字段。我试过jQuery.但这在屏幕模式和打印模式下都有效。HTML:somescreensomeprintPrintJS:$('button').click(function(){$('input[type=text]').each(function(){if($(this).val()==0){$(this).hide()}})})CSS:@mediaprint{.screen{display:none;}.print{display:block;}}@mediascreen{.screen{display: