当前位置: 首页 > 面试题库 >

使用Java API创建简单的1行Spark DataFrame

那谦
2023-03-14
问题内容

在Scala中,我可以像这样从内存中的字符串创建单行DataFrame:

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

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

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

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

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();执行时,我得到:

++
||
++
||
++

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


问题答案:

您可以通过创建到Rdd的列表,然后创建将包含列名的Schema来实现。

可能还有其他方法,只是其中一种。

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|


 类似资料:
  • 我们在前言中已经简单提到过 action,但具体什么是 action creator,它们又是如何关联到 action 的呢? 其实,通过几行简单的代码就可以解释清楚了! action creator 就是函数而已... var actionCreator = function() { // ...负责构建一个 action (是的,action creator 这个名字已经很明显了)并返回

  • 也许有一些我看不到的非常简单的东西。我正在尝试从某个API调用一个方法,这个方法要求PendingIntent异步向我发送一些值。我已经阅读了半小时的文档和示例,无法理解简单的方法。 更准确地说,我想调用ActivityRecognitionApi。为了举例说明,我是如何从类似的api接收位置的: 所以我想做同样的事情来接收认可的活动: 那么,创建一个PendingEvent来获取价值的简单方法是

  • 让我们开始使用Python和XlsxWriter模块创建一个简单的Excel电子表格。 假设我们有一些要转换为Excel Xlsx文件的每月支出数据: expenses = ( ['Rent', 1000], ['Gas', 100], ['Food', 300], ['Gym', 50], ) 那么,我们可以从如下所示的示例程序开始: import

  • 当用户查看我们的租借列表时,他们可能希望有一些交互式选项来帮助他们作出决定。让我们添加切换每个租赁图像大小的功能。为此,我们将使用一个组件。 我们生成一个rental-listing组件来管理我们每个租赁的行为。每个组件名称中都要有一个破折号,来避免与可能的HTML元素冲突,因此命名rental-listing允许,受但命名rental不允许。 生成一个组件: $ ember g componen

  • 问题内容: 如果我想在python中创建一个简单的XML文件,该怎么办?(明智的) 我想要的xml看起来像: 问题答案: 如今,最流行(且非常简单)的选项是ElementTree API,该元素自Python 2.5起已包含在标准库中。 可用的选项有: ElementTree(ElementTree的基本,纯Python实现。自2.5以来是标准库的一部分) cElementTree(Element

  • 本文向大家介绍iOS 如何使用UIBezierPath创建简单的形状,包括了iOS 如何使用UIBezierPath创建简单的形状的使用技巧和注意事项,需要的朋友参考一下 示例 对于一个简单的圈子: 迅速: 对于一个简单的矩形: 迅速: 对于简单的一行: 迅速: 半圈: 迅速: 对于一个简单的三角形: 迅速: