我正在与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/node@.COM')]}, u'hive2': {'xml_name': u'hive2', 'properties': [('hive2.jdbc.url', 'jdbc:hive2://node.jnj.com:10000/default'), ('hive2.server.principal', 'hive/itsusraedld01.jnj.com@.COM')]}, 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*
答案 0 :(得分:2)
你有一个参数暗示Log4J应该使用特定的属性文件,但没有指示Sqoop使用它(在命令行上没有-Dlog4j.configuration=...file name without path...
)。
好的,我们假设这是故意的(?);问题是
log4j.properties
<file>
依赖项与Oozie JARs一起转储的地方)以及所有这些app / Oozie JARs log4j.properties
的第一个匹配恰好是Log4J无法打开的文件可能的解决方法是
log4j.properties
- cf. that post中的第一个示例,用于记录标记为INFO且高于的任何内容(即INFO,WARN,ERROR但不是DEBUG)到StdOut <file>
元素的容器中oozie.launcher.mapreduce.task.classpath.first
等属性设置为true
来请求其CLASSPATH以当前工作目录开始(实际属性可能取决于您的Hadoop版本,请参阅{ {3}}和that post) 请注意,步骤3仅是必需的,因为CLASSPATH中的其他位置存在默认名称;如果Sqoop被指示使用不同名称的不同文件,那么就没有歧义。