我正在研究 AWS 上的 Hive(特别是 EMR)。他们提供了两种选择
hive命令行客户端提供 Hive 查询。显然,在第二个选项中,集群将保持活动状态,直到明确要求终止为止。
我想修改保持活动配置单元集群中从属节点的数量。我在emr faq中读到它只支持添加和删除,task-nodes但仅支持添加(但不删除)core-nodes。核心节点有助于 HDFS 存储,但任务节点则不然。
我想向正在运行的集群添加更多核心节点,并在运行的查询数量较少时缩小它们的规模。有没有办法实现这一点(可能使用cloudwatch)?
我尝试在EMR上运行Pig脚本,如:
pig -f s3://bucket-name/loadData.pig
但它失败了,错误:
错误2999:意外的内部错误.空值
org.apache.pmpl.impl.io.FileLocalizer.fetchFilesInternal(FileLocalizer.java:778)中的org.apache.pig.impl.io.FileLocalizer.fetchFiles(FileLocalizer.java:746)中的java.lang.NullPointerException. apache.pig.PigServer.registerJar(PigServer.java:458)org.apache.pig.tools.grunt.GruntParser.processRegister(GruntParser.java:433)atg.apache.pig.tools.pigscript.parser.PigScriptParser.解析(PigScriptParser.java:445)org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:194)org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:170) org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84)org.apache.pig.Main.run(Main.java:479)org.apache.pig.Main.main(Main .java:159)在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)在org.apache.hadoop.util.RunJar.main(RunJar.java:187)
loadData.pig看起来像:
A = load '/ajasing/input/input.txt' USING PigStorage('\t', '-noschema');
store A into '/ajasing/output1444/input1444.txt';
Run Code Online (Sandbox Code Playgroud)
我正在运行Pig版本0.11.1,hadoop版本1.0.3和AMI版本2.4.6.
如果我在本地执行这个猪,即通过在EMR集群上本地复制猪脚本,它工作正常.但是,如果猪脚本源是s3,它会因上述错误而失败.
请告诉我这里有什么问题.
我正在关注文档:http : //docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-dev-create-metastore-outside.html, 并尝试使用awscli == 1.10.38创建emr集群。
我使用文档中提到的以下命令:
aws emr create-cluster --release-label emr-5.0.0 --instance-type m3.xlarge --instance-count 2 \
--applications Name=Hive --configurations ./hiveConfiguration.json --use-default-roles
Run Code Online (Sandbox Code Playgroud)
我还使用与文档中提到的完全相同的hiveConfiguration.json。
但显示“ aws:错误:选项--configurations的json参数无效”
为什么会出现错误?
我想知道如何将数据从EMR群集的HDFS文件系统移动到S3存储桶。我认识到我可以在Spark中直接写S3,但是原则上以后也应该很简单,到目前为止,我还没有发现这是真的。
AWS文档建议s3-dist-cp出于在HDFS和S3之间移动数据的目的。该文件对s3-dist-cp国家的HDFS源应该在URL格式指定,即hdfs://path/to/file。到目前为止,我已经使用来在HDFS和本地文件系统之间移动数据hadoop fs -get,该语法采用path/to/file而不是hdfs://path/to/file。目前尚不清楚如何在两者之间进行映射。
我正在从SSH进入主节点。我尝试了以下方法,每个方法都有两个和三个斜杠:
hdfs:///[public IP]/path/to/filehdfs:///[public IP]:8020/path/to/filehdfs:///localhost/path/to/filehdfs:///path/to/file/path/to/file (以及许多变体)在每种情况下,我的命令都按照文档的格式设置:
s3-dist-cp --src hdfs:// ... --dest s3:// my-bucket / destination
我已经尝试了单个文件和整个目录。在每种情况下,我都会得到一个错误,即源文件不存在。我究竟做错了什么?
我在 RDS 中有 Postgresql 数据库。我需要每小时从 postgresql 数据库中的一堆表中获取数据并将数据推送到 S3 存储桶中。我只希望每小时发送增量更改(任何新的插入/更新)。是否可以使用 DMS 来完成此操作,或者 EMR 是执行此活动的更好工具吗?
emr-5.20.0我尝试使用以下命令从 AWS EMR 主节点提交 Spark 应用程序:
spark-submit --executor-memory 4g --deploy-mode cluster --master yarn --class com.example.Application --properties-file config.conf s3://example-jobs/application.jar
Run Code Online (Sandbox Code Playgroud)
但它失败并出现以下错误:
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found
Run Code Online (Sandbox Code Playgroud)
其原因在于以下参数:
--properties-file config.conf
Run Code Online (Sandbox Code Playgroud)
我做错了什么以及如何正确地将属性文件传递到 AWS EMR Apache Spark?
我想将 .csv 文件中的加载数据读取到 Spark Dataframe 中,但我收到一条错误消息,很可能是由于输入错误。是否有可能以编程方式跳过坏行?
这是我的 Scala 代码。
val df = session.read
.option("header", "true")
.option("delimiter", delimiter)
.option("inferSchema", "true")
.option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
.csv(csvFilePath)
onData(df)
Run Code Online (Sandbox Code Playgroud)
这是我从 Amazon EMR 获得的错误日志:
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 61 in stage 1.0 failed 1 times, most recent failure: Lost task 61.0 in stage 1.0 (TID 62, localhost, executor driver): java.lang.NullPointerException
at org.apache.spark.sql.execution.datasources.csv.CSVInferSchema$.org$apache$spark$sql$execution$datasources$csv$CSVInferSchema$$inferRowType(CSVInferSchema.scala:64)
at org.apache.spark.sql.execution.datasources.csv.CSVInferSchema$$anonfun$2.apply(CSVInferSchema.scala:44)
at org.apache.spark.sql.execution.datasources.csv.CSVInferSchema$$anonfun$2.apply(CSVInferSchema.scala:44)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:142)
at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:142)
at scala.collection.Iterator$class.foreach(Iterator.scala:750)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1202)
at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:142)
at …Run Code Online (Sandbox Code Playgroud) amazon-emr ×7
amazon-s3 ×3
apache-spark ×2
emr ×2
hadoop ×2
hive ×2
apache-pig ×1
autoscaling ×1
aws-cli ×1
aws-dms ×1
csv ×1
dataframe ×1
postgresql ×1