首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将查询传递到Yarn群集模式下的java spark程序

无法将查询传递到Yarn群集模式下的java spark程序
EN

Stack Overflow用户
提问于 2021-03-05 20:14:00
回答 1查看 44关注 0票数 0

Talend 7.1、MapR6.0分发版、Spark 2.2、

我有一个Talend作业(master),它在设置Spark-hive上下文后调用Child spark作业来执行hive-query。这个要执行的查询从Master传递给子spark作业。

查询可以有复杂的配置单元连接&有时用户甚至可以使用特殊字符反引号、!、tilda、@。

如果子spark作业在Spark Yarn客户端模式下运行,则任何查询都可以正常运行。但是,如果在集群模式下执行相同的命令&如果查询有\n或\t或反引号(`)-它会失败,即使在启动spark session时也是如此。大多数情况下,查询本身在从主节点传递到子节点的过程中已经损坏。

我正在考虑将查询字符串转换为十六进制或Unicode,以避免由于特殊字符而损坏,然后在spark作业中转换回来。如果有更好的解决方案,请提出建议。

EN

回答 1

Stack Overflow用户

发布于 2021-04-10 15:37:40

关于用于Talend Yarn集群模式作业的mapR分发的几个要点:

  1. 集群模式的spark作业将无法从../lib目录(甚至不是talend特定的routines.jar)中获取任何jar。您需要显式地将其与其他spark jars一起传递给驱动程序。
  2. 任何包含空格的配置单元查询或上下文参数,\n等。在集群模式下运行spark作业的主节点向工作节点传递的字符串不完整。
  3. 您无法在Talend BD spark作业中的作业中更新任何上下文变量(如使用一个tJava更新上下文变量,并期望它在其他组件中使用它-不起作用!)

考虑到以上几点,我们需要做一些工作:

Appraoch-1:您可以用一些字符(如@)替换(读取删除)所有空格,\n等,然后在Spark作业中替换回来。注意:对于像`这样的几个特殊字符,这将失败。

方法2:所有查询,参数可以有空间或特殊字符或需要显式解析-将其放在一个文件中,将该文件传递到hdfs并读取Spark作业中的文件,以获得所需的所有参数。请注意,当您在Spark中读取文件时,job - flow可以被视为RDD (& schema以及),它可以被解析以获得所有变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66492414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档