[HADOOP] Spark에서 DynamoDB에 간단한 RDD 쓰기
HADOOPSpark에서 DynamoDB에 간단한 RDD 쓰기
기본 RDD 데이터 세트를 DynamoDB로 가져 오려고 시도했습니다. 이것은 코드입니다.
import org.apache.hadoop.mapred.JobConf
var rdd = sc.parallelize(Array(("", Map("col1" -> Map("s" -> "abc"), "col2" -> Map("n" -> "123")))))
var jobConf = new JobConf(sc.hadoopConfiguration)
jobConf.set("dynamodb.output.tableName", "table_x")
jobConf.set("mapred.output.format.class", "org.apache.hadoop.dynamodb.write.DynamoDBOutputFormat")
rdd.saveAsHadoopDataset(jobConf)
그리고 이것은 내가 얻는 오류입니다.
16/02/28 15:40:38 WARN TaskSetManager: Lost task 7.0 in stage 1.0 (TID 18, ip-172-31-9-224.eu-west-1.compute.internal): java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.hadoop.io.Text
at org.apache.hadoop.dynamodb.write.DefaultDynamoDBRecordWriter.convertValueToDynamoDBItem(DefaultDynamoDBRecordWriter.java:10)
at org.apache.hadoop.dynamodb.write.AbstractDynamoDBRecordWriter.write(AbstractDynamoDBRecordWriter.java:90)
at org.apache.spark.SparkHadoopWriter.write(SparkHadoopWriter.scala:96)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13$$anonfun$apply$6.apply$mcV$sp(PairRDDFunctions.scala:1199)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13$$anonfun$apply$6.apply(PairRDDFunctions.scala:1197)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13$$anonfun$apply$6.apply(PairRDDFunctions.scala:1197)
at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1250)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13.apply(PairRDDFunctions.scala:1205)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1$$anonfun$13.apply(PairRDDFunctions.scala:1185)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:89)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
이 문제를 해결하려면 어떻게해야합니까?
해결법
-
==============================
1.개체를 텍스트 개체로 변환해야합니다.
개체를 텍스트 개체로 변환해야합니다.
여기를 살펴보십시오.
https://aws.amazon.com/blogs/big-data/using-spark-sql-for-etl/
from https://stackoverflow.com/questions/35733968/simple-rdd-write-to-dynamodb-in-spark by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Cloudera 빠른 시작 도커에서 볼륨으로서의 HDFS (0) | 2019.08.08 |
---|---|
[HADOOP] 레코드 리더 및 레코드 경계 (0) | 2019.08.07 |
[HADOOP] 하둡 얀 노드 목록은 슬레이브를 localhost.localdomain : #somenumber로 표시합니다. 연결 거부 예외 (0) | 2019.08.07 |
[HADOOP] 하둡 복제 인자 혼란 (0) | 2019.08.07 |
[HADOOP] Java를 사용하여 효율적으로 Hadoop (HDFS) 파일의 첫 번째 줄을 읽는 방법은 무엇입니까? (0) | 2019.08.07 |