【问题标题】:Create Empty dataframe Java Spark创建空数据框 Java Spark
【发布时间】:2020-11-03 23:12:57
【问题描述】:

有很多关于如何使用 Spark Scala/Python 创建空数据帧/数据集的示例。但我想知道如何在 Java Spark 中创建一个空的数据框/数据集。

我必须创建一个空数据框,其中只有一列,标题为 Column_1 并键入 String。

【问题讨论】:

    标签: java dataframe apache-spark


    【解决方案1】:

    Alternative-1 使用user defined schema 创建empty dataframe

    // alternative - 1
            StructType s = new StructType()
                    .add(new StructField("Column_1", DataTypes.StringType, true, Metadata.empty()));
            Dataset<Row> csv = spark.read().schema(s).csv(spark.emptyDataset(Encoders.STRING()));
            csv.show(false);
            csv.printSchema();
            /**
             * +--------+
             * |Column_1|
             * +--------+
             * +--------+
             *
             * root
             *  |-- Column_1: string (nullable = true)
             */
    

    Alternative-2 使用null 值和user defined schema 创建数据框

     Dataset<Row> df4 = spark.sql("select cast(null  as string) Column_1");
            df4.show(false);
            df4.printSchema();
            /**
             * +--------+
             * |Column_1|
             * +--------+
             * |null    |
             * +--------+
             *
             * root
             *  |-- Column_1: string (nullable = true)
             */
    

    Alternative-3

     ClassTag<Row> rowTag = scala.reflect.ClassTag$.MODULE$.apply(Row.class);
            Dataset<Row> df5 = spark.createDataFrame(spark.sparkContext().emptyRDD(rowTag),
                    new StructType()
                            .add(new StructField("Column_1", DataTypes.StringType, true, Metadata.empty())));
            df5.show(false);
            df5.printSchema();
            /**
             * +--------+
             * |Column_1|
             * +--------+
             * +--------+
             *
             * root
             *  |-- Column_1: string (nullable = true)
             */
    

    spark.emptyDataframe 创建没有任何列和值的数据框

     Dataset<Row> rowDataset = spark.emptyDataFrame();
            rowDataset.show(false);
            rowDataset.printSchema();
            /**
             * ++
             * ||
             * ++
             * ++
             *
             * root
             */
    

    【讨论】:

    • 好一个 Someshwar
    • 增加了一种方法
    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多