我正在与Oozie,shell动作和sqoop合作。
我正在使用oozie来运行许多sqoop命令。我已经设置了一个shell动作,在那个shell中我放置了很多sqoop命令。现在,shell动作正在被触发,甚至正在发生sqoop。
但是,sqoop没有正确的日志记录。所以我将sqoop命令重定向到日志文件。在那里,我只看到以下几行。
我的代码如下。在shell脚本中:
*
sqoop import --connect jdbc:mysql://server:3306/test --verbose --username root --password Password --append --table People --m 1 --hive-drop-import-delims --target-dir /user/username/20/ --delete-target-dir >> /tmp/log
*
记录的日志详情:
警告:/opt/cloudera/parcels/CDH-5.4.2-1.cdh5.4.2.p0.2/bin/../lib/sqoop/../accumulo不存在! Accumulo进口将失败。请将$ ACCUMULO_HOME设置为Accumulo安装的根目录。
如何在Oozie中使用shell操作获取sqoop日志?我需要详细信息,例如加载/拉出的记录数,以及在控制台上运行sqoop命令时发生的常规日志记录。
请在下面找到我的jobproperties.xml:
*oozie.use.system.libpath=True
credentials={u'hcat': {'xml_name': u'hcat', 'properties': [('hcat.metastore.uri', u'thrift://node:9083'), ('hcat.metastore.principal', u'hive/[email protected]')]}, u'hive2': {'xml_name': u'hive2', 'properties': [('hive2.jdbc.url', 'jdbc:hive2://node.jnj.com:10000/default'), ('hive2.server.principal', 'hive/[email protected]')]}, u'hbase': {'xml_name': u'hbase', 'properties': []}}
nameNode=hdfs://nameservice1
jobTracker=yarnRM
oozie.sqoop.log.level=DEBUG
log4jConfig=debug-log.properties
oozie.libpath=/user/oozie/share/lib*
你有一个参数暗示Log4J应该使用特定的属性文件,但没有指示Sqoop使用它(在命令行上没有-Dlog4j.configuration=...file name without path...
)。
好的,我们假设这是故意的(?);问题是
log4j.properties
依赖项与Oozie JAR一起转储的地方)和所有这些app / Oozie JAR<file>
的第一场比赛恰好是Log4J无法打开的文件可能的解决方法是
log4j.properties
- cf. log4j.properties
中的第一个示例,用于将任何标记为INFO及以上的内容(即INFO,WARN,ERROR但不是DEBUG)记录到StdOut<file>
等属性设置为oozie.launcher.mapreduce.task.classpath.first
来请求其CLASSPATH以当前工作目录开始(实际属性可能取决于您的Hadoop版本,请参阅true
和that post)请注意,步骤3仅是必需的,因为CLASSPATH中的其他位置存在默认名称;如果Sqoop被指示使用不同名称的不同文件,则不会有歧义。