Tệp đầu ra được tạo ra thông qua phương thức Spark SQL DataFrame.write() bắt đầu bằng tiền tố "part" tên cơ sở. ví dụ.Thay đổi tiền tố tên tệp đầu ra cho DataFrame.write()
DataFrame sample_07 = hiveContext.table("sample_07");
sample_07.write().parquet("sample_07_parquet");
Kết quả trong:
hdfs dfs -ls sample_07_parquet/
Found 4 items
-rw-r--r-- 1 rob rob 0 2016-03-19 16:40 sample_07_parquet/_SUCCESS
-rw-r--r-- 1 rob rob 491 2016-03-19 16:40 sample_07_parquet/_common_metadata
-rw-r--r-- 1 rob rob 1025 2016-03-19 16:40 sample_07_parquet/_metadata
-rw-r--r-- 1 rob rob 17194 2016-03-19 16:40 sample_07_parquet/part-r-00000-cefb2ac6-9f44-4ce4-93d9-8e7de3f2cb92.gz.parquet
Tôi muốn thay đổi tiền tố đầu ra tên tập tin được sử dụng khi tạo ra một tập tin sử dụng Spark SQL DataFrame.write(). Tôi đã thử đặt thuộc tính "mapreduce.output.basename" trên cấu hình hadoop cho bối cảnh Spark. ví dụ.
public class MyJavaSparkSQL {
public static void main(String[] args) throws Exception {
SparkConf sparkConf = new SparkConf().setAppName("MyJavaSparkSQL");
JavaSparkContext ctx = new JavaSparkContext(sparkConf);
ctx.hadoopConfiguration().set("mapreduce.output.basename", "myprefix");
HiveContext hiveContext = new org.apache.spark.sql.hive.HiveContext(ctx.sc());
DataFrame sample_07 = hiveContext.table("sample_07");
sample_07.write().parquet("sample_07_parquet");
ctx.stop();
}
Điều đó không thay đổi tiền tố tên tệp đầu ra cho các tệp được tạo.
Có cách nào để ghi đè tiền tố tên tệp đầu ra khi sử dụng phương thức DataFrame.write() không?
Cảm ơn bạn đã trả lời. Nhiều đánh giá cao. – Rob