1

나는 카운트 잘 실행되고 있지만 그 이상 내가오류 스파크

orders.take(1).foreach(println) 

처럼 아무것도 실행할 수 없습니다입니다 data from DynamoDB with Apache Spark

를 가져 오는 비행선 노트북을 사용하여 빠른 보고서를 구축을 위해 노력 오전 DynamoDB의 기록을 읽기에 다음 오류로 인해 실패합니다.

org.apache.spark.SparkException: Job aborted due to stage failure: Task 0.0 in stage 5.0 (TID 5) had a not serializable result: org.apache.hadoop.io.Text 
Serialization stack: 
- object not serializable (class: org.apache.hadoop.io.Text, value:) 
- field (class: scala.Tuple2, name: _1, type: class java.lang.Object) 
- object (class scala.Tuple2, (,{<<A rec from DynamoDB as JSON>>})) 
- element of array (index: 0) 
- array (class [Lscala.Tuple2;, size 7) 

해결 방법? 나는 결과를 캐스트하는 시도를하지만 실패 :

asInstanceOf[Tuple2[Text, DynamoDBItemWritable] 

그래서 난 임시 테이블로이 등록하는 DataFrame이 변환 할 계획입니다 필터를

orders.filter(_._1 != null) 

했다. 그런 다음 이것에 대한 임시 쿼리를 실행할 계획입니다.

답변

1

완전한 스파크 전문가는 아니지만 병렬화 될 수있는 모든 것이 직렬화 가능해야한다는 것을 알고 있습니다.

object not serializable (class: org.apache.hadoop.io.Text, value:) 

클래스의 정의에 빠른 검사가되지 않을 수 있음을 알려줍니다 :

public class Text 
    extends BinaryComparable 
    implements WritableComparable<BinaryComparable> 

이 도움이 될 수 :

나는 오류 메시지에서 단서가있을 수 있습니다 생각

http://apache-spark-user-list.1001560.n3.nabble.com/How-to-solve-java-io-NotSerializableException-org-apache-hadoop-io-Text-td2650.html

+0

안녕하세요, 귀하의 회신에 감사드립니다. 여기 코드는 dynamoDB 테이블을 hadoopRDD로 직접 읽습니다. 나는 그것을 읽고 그것을 직렬화 가능한 객체로 구현하는 옵션을 가지고 있지 않다. DynamoDB와 상호 작용할 aws 제공된 jar를 사용하고 있습니다. –