문제는 빈 클래스을 사용하는 것입니다. JavaBeans Wikipedia에서
:
자바 빈즈는 하나의 객체 (콩)에 많은 개체를 캡슐화하는 클래스입니다. 그것들은 직렬화 가능하고, 0 인수 인 생성자를 가지며 getter와 setter 메소드를 사용하여 속성에 대한 액세스를 허용합니다. "Bean"이라는 이름은이 표준을 포함하도록 주어졌으며, 은 Java 용 재사용 가능한 소프트웨어 구성 요소를 만드는 것을 목표로합니다.
가정 해 우리가이 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;}
}
을 우리는 b0
및 b1
을 만들었습니다 Bean의 인스턴스 by
Bean b0 = new Bean();
b0.setK("k0");
b0.setSomething("sth0");
Bean b1 = new Bean();
b1.setK("k1");
b1.setSomething("sth1");
또한 콩 (b0
, 여기) data
라는 List<Bean>
에 b1
는 :
이제
List<Bean> data = new ArrayList<Bean>();
data.add(b0);
data.add(b1);
우리는 DataFrame
사용을 만들 수 있습니다 List<Bean>
및 Bean
클래스 :
+---+---------+
| k|something|
+---+---------+
| k0| sth0|
| k1| sth1|
+---+---------+
: 우리가
df.show()
을, 여기에 출력이
DataFrame df = sqlContext.createDataFrame(data, Bean.class);
입니다
데이터 프레임을 만드는 더 나은 방법 스파크에서 JSON 문자열
로부터, 직접 JSON 문자열의 목록에서 DataFrame
을 만들 수 있습니다 jsc
이 JavaSparkContext
의 인스턴스
DataFrame df = sqlContext.read().json(jsc.parallelize(data));
.