当前位置: 首页 > 知识库问答 >
问题:

EMR Step命令运行程序配置单元脚本

云星波
2023-03-14

我正在尝试在EMR集群的S3上运行一个配置单元脚本。

通过SSH连接到EMR集群时,键入

"hive -f s3://..."

作品但是,我希望这是自动完成的,所以我创建了一个python脚本,并试图向集群添加一个步骤。但是,我无法运行此步骤,即使是通过AWS控制台手动添加此步骤。对于jar文件,我指定了“command runner.jar”,但无论我随后使用什么参数(我用另一个线程建议的“hive-f s3://…”尝试了它,但不起作用),该步骤总是立即失败。当切换到script-runner.jar而不是command runner时,我可以以某种方式让它使用该命令

/usr/share/aws/emr/scripts/hive-script --run-hive-script --args -f s3://...

然而,几秒钟后,我得到一个错误,在stderr我会找到这个错误。

Logging initialized using configuration in jar:file:/home/hadoop/.versions/hive-0.13.1-amzn-3/lib/hive-common-0.13.1-amzn-3.jar!/hive-log4j.properties
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:346)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:692)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:636)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1420)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:62)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:72)
at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2483)
at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2495)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:340)
... 7 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1418)
... 12 more
Caused by: javax.jdo.JDOFatalDataStoreException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true, username = hive. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
java.sql.SQLException: Access denied for user 'hive'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)

理想情况下,我想通过使用command-runner.jar.有人能告诉我应该为此使用的正确参数吗(在aws控制台和/或add_job_flow的Boto3参数中)?

共有2个答案

韩梓
2023-03-14

从S3运行配置单元脚本

hadoop jar /var/lib/aws/emr/step-runner/hadoop-jars/command-runner.jar hive-script --run-hive-script --args -f  s3://path/scripts/hive_show_table.hql
司徒兴思
2023-03-14

嗯,对于任何有同样问题的人来说:事实证明,我错过了在EMR集群的应用程序中添加“蜂巢”...

 类似资料:
  • 我已经检查了相关的线程-如何在配置单元脚本中设置变量 在hive内部,变量运行良好: 错误:java.lang.IllegalArgumentException:无法从空字符串创建路径:位于org.apache.hadoop.fs.Path.CheckPathArg(Path.java:131)(位于org.apache.hadoop.fs.Path.(Path.java:139)(位于org.a

  • 问题内容: 所以我在这里有一个菜鸟般的时刻,我以前从未使用过命令行来运行Java程序,但现在我需要。我遇到的问题是,当我尝试运行程序时,出现ClassNotFoundException。我的课叫做OmadUpdate。我已经使用javac命令将OmadUpdate.java文件编译为OmadUpdate.class。我已经检查了目录,并且它们都绝对存在,但是当我运行java OmadUpdate命

  • 我下载了一个java程序,它由两个文件夹src和classes组成,分别包含源文件和类文件。现在,src和classes文件夹包含几个嵌套的子文件夹,其中最后一个子文件夹分别包含源文件和类文件。更准确地说,源文件和类文件的路径是src/edu/univ/。java和classes/edu/univ/。班假设包含main函数的文件是main。java,如何从命令行运行此程序。 我尝试过: 我也尝试过

  • 我如何通过命令行运行它?

  • HDFS读取:13245 HDFS写入:72成功MapReduce CPU花费的总时间:2秒300毫秒 确定所用时间:63.787秒