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作业中转换回来。如果有更好的解决方案,请提出建议。
发布于 2021-04-10 15:37:40
关于用于Talend Yarn集群模式作业的mapR分发的几个要点:
考虑到以上几点,我们需要做一些工作:
Appraoch-1:您可以用一些字符(如@)替换(读取删除)所有空格,\n等,然后在Spark作业中替换回来。注意:对于像`这样的几个特殊字符,这将失败。
方法2:所有查询,参数可以有空间或特殊字符或需要显式解析-将其放在一个文件中,将该文件传递到hdfs并读取Spark作业中的文件,以获得所需的所有参数。请注意,当您在Spark中读取文件时,job - flow可以被视为RDD (& schema以及),它可以被解析以获得所有变量。
https://stackoverflow.com/questions/66492414
复制相似问题