1
次のコードは、パーケットファイルからSpark DataFrameを読み取り、別のパーケットファイルに書き込みます。新しいParquetファイルにDataFrameを書き込んだ後、ArrayType DataTypeにNULL可能なフィールドが変更されます。 コード:スパークデータフレームの書き込み時にnullフィールドが変更される
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、真)
スパークのバージョンがある:1.6.2
何か強い理由はありますか?列が自動的にnullableに変換されない場合、これらの互換性の問題は何ですか? – Naresh
私は本当にその答えを知らない。しかし、私はそれがDataframeの出力方法と関連していると思います。 – chanllen