使用 Java API 创建一个简单的 1 行 Spark DataFrame [英] Creating a simple 1-row Spark DataFrame with Java API

查看:35
本文介绍了使用 Java API 创建一个简单的 1 行 Spark DataFrame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 Scala 中,我可以从内存中的字符串创建一个单行的 DataFrame,如下所示:

In Scala, I can create a single-row DataFrame from an in-memory string like so:

val stringAsList = List("buzz")
val df = sqlContext.sparkContext.parallelize(jsonValues).toDF("fizz")
df.show()

df.show()运行时,输出:

+-----+
| fizz|
+-----+
| buzz|
+-----+

现在我正在尝试从 Java 类内部执行此操作. 显然 JavaRDD 没有 toDF(String)方法.我试过了:

Now I'm trying to do this from inside a Java class. Apparently JavaRDDs don't have a toDF(String) method. I've tried:

List<String> stringAsList = new ArrayList<String>();
stringAsList.add("buzz");
SQLContext sqlContext = new SQLContext(sparkContext);
DataFrame df = sqlContext.createDataFrame(sparkContext
    .parallelize(stringAsList), StringType);
df.show();

...但似乎仍然不足.现在当 df.show(); 执行时,我得到:

...but still seem to be coming up short. Now when df.show(); executes, I get:

++
||
++
||
++

(一个空的 DF.)所以我问:使用 Java API,我如何将内存中的字符串读入只有 1 行和 1 列的 DataFrame, 并指定该列的名称?(以便 df.show() 与上面的 Scala 相同)?

(An empty DF.) So I ask: Using the Java API, how do I read an in-memory string into a DataFrame that has only 1 row and 1 column in it, and also specify the name of that column? (So that the df.show() is identical to the Scala one above)?

推荐答案

您可以通过创建 List 到 Rdd 而不是创建包含列名的 Schema 来实现这一点.

You can achieve this by creating List to Rdd and than create Schema which will contain column name.

也许还有其他方式,这只是其中一种.

There might be other ways as well, it's just one of them.

List<String> stringAsList = new ArrayList<String>();
        stringAsList.add("buzz");

JavaRDD<Row> rowRDD = sparkContext.parallelize(stringAsList).map((String row) -> {
                return RowFactory.create(row);
            });

StructType schema = DataTypes.createStructType(new StructField[] { DataTypes.createStructField("fizz", DataTypes.StringType, false) });

DataFrame df = sqlContext.createDataFrame(rowRDD, schema).toDF();
df.show();

//+----+
|fizz|
+----+
|buzz|

这篇关于使用 Java API 创建一个简单的 1 行 Spark DataFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆