1
다음 코드는 쪽모락 파일에서 Spark DataFrame을 읽고 다른 쪽모이도 파일에 씁니다. ArrayType DataType에 Nullable 필드가 새 Parquet 파일에 DataFrame을 작성한 후에 변경됩니다. 코드 :스파크 데이터 프레임을 쓸 때 Nullable 필드가 변경됩니다.
SparkConf sparkConf = new SparkConf();
String master = "local[2]";
sparkConf.setMaster(master);
sparkConf.setAppName("Local Spark Test");
JavaSparkContext sparkContext = new JavaSparkContext(new SparkContext(sparkConf));
SQLContext sqc = new SQLContext(sparkContext);
DataFrame dataFrame = sqc.read().parquet("src/test/resources/users.parquet");
StructField[] fields = dataFrame.schema().fields();
System.out.println(fields[2].dataType());
dataFrame.write().mode(SaveMode.Overwrite).parquet("src/test/resources/users1.parquet");
DataFrame dataFrame1 = sqc.read().parquet("src/test/resources/users1.parquet");
StructField [] fields1 = dataFrame1.schema().fields();
System.out.println(fields1[2].dataType());
출력 : ArrayType (거짓 IntegerType) ArrayType (IntegerType, TRUE)
스파크 버전은 다음과 같습니다 1.6.2
그 이유가 무엇입니까? 열이 nullable로 자동 변환되지 않는 경우 호환성 문제는 무엇입니까? – Naresh
나는 그 답을 정말로 모른다. 하지만 Dataframe을 출력하는 방법과 관련이 있다고 생각합니다. – chanllen