gpt4 book ai didi

java - Apache Spark,Java 中使用 List 作为第一个参数的 createDataFrame 示例

转载 作者:搜寻专家 更新时间:2023-11-01 02:22:01 24 4
gpt4 key购买 nike

谁能举个java实现的例子 public DataFrame createDataFrame(java.util.List<?> data,java.lang.Class<?> beanClass)功能,如 Spark JavaDoc 中所述?

我有一个 JSON 字符串列表作为第一个参数传递,因此我传递了 String.class作为第二个参数,但它给出了一个错误

java.lang.ClassCastException: org.apache.spark.sql.types.StringType$ cannot be cast to org.apache.spark.sql.types.StructType

不知道为什么,因此寻找一个例子。

最佳答案

问题是您对 Bean 类 的使用。

来自 JavaBeans Wikipedia :

JavaBeans are classes that encapsulate many objects into a single object (the bean). They are serializable, have a zero-argument constructor, and allow access to properties using getter and setter methods. The name "Bean" was given to encompass this standard, which aims to create reusable software components for Java.

为了更清楚,让我举一个在 Spark 中使用 Java Bean 的例子:

假设我们使用这个 Bean 类:

import java.io.Serializable;

public class Bean implements Serializable {
private static final long serialVersionUID = 1L;

private String k;
private String something;

public String getK() {return k;}
public String getSomething() {return something;}

public void setK(String k) {this.k = k;}
public void setSomething(String something) {this.something = something;}
}

我们创建了b0b1是 Bean 的实例:

Bean b0 = new Bean();
b0.setK("k0");
b0.setSomething("sth0");
Bean b1 = new Bean();
b1.setK("k1");
b1.setSomething("sth1");

我们还添加了 bean(b0b1 这里)到 List<Bean> 中称为 data :

List<Bean> data = new ArrayList<Bean>();
data.add(b0);
data.add(b1);

现在我们可以创建一个 DataFrame使用 List<Bean>Bean类:

DataFrame df = sqlContext.createDataFrame(data, Bean.class);

如果我们这样做 df.show() ,这里是输出:

+---+---------+
| k|something|
+---+---------+
| k0| sth0|
| k1| sth1|
+---+---------+

从 JSON 字符串创建数据框的更好方法

在 Spark 中,您可以直接创建 DataFrame来自 JSON 字符串列表:

DataFrame df = sqlContext.read().json(jsc.parallelize(data));

哪里jscJavaSparkContext 的实例.

关于java - Apache Spark,Java 中使用 List<?> 作为第一个参数的 createDataFrame 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38022267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com