上一篇文章中,我们使用了Scala语言调用Spark sql接口进行了开发,本篇文章我们使用Java语言进行同样业务功能的处理,依然是对JSON、Txt文本进行处理。
JSON和Txt文件内容如下所示:
{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}
Michael, 29
Andy, 30
Justin, 19
Java处理JSON代码:
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
public class Testsql {
public static void main(String[] args) {
SparkSession spark = SparkSession
.builder().master("local")
.appName("Java Spark sql basic example")
.config("spark.some.config.option", "some-value")
.getorCreate();
Dataset<Row> df = spark.read().json("file:///d:/test_spark/people.json");
df.show();
df.createOrReplaceTempView("people");
Dataset<Row> sqlDF = spark.sql("select * from people where age>20");
sqlDF.show();
}
}
public class Person {
private String name;
private long age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getAge() {
return age;
}
public void setAge(long age) {
this.age = age;
}
}
import com.alan.entity.Person;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.sql.*;
public class TestText {
public static void main(String[] args) {
SparkSession spark = SparkSession
.builder().master("local")
.appName("Java Spark sql basic example")
.config("spark.some.config.option", "some-value")
.getorCreate();
JavaRDD<Person> peopleRDD = spark.read()
.textFile("d:/test_spark/people.txt")
.javaRDD()
.map(line -> {
String[] parts = line.split(",");
Person person = new Person();
person.setName(parts[0]);
person.setAge(Integer.parseInt(parts[1].trim()));
return person;
});
// Apply a schema to an RDD of JavaBeans to get a DataFrame
Dataset<Row> peopleDF = spark.createDataFrame(peopleRDD, Person.class);
// Register the DataFrame as a temporary view
peopleDF.createOrReplaceTempView("people");
// sql statements can be run by using the sql methods provided by spark
Dataset<Row> teenagersDF = spark.sql("select * from people where age>20");
teenagersDF.show();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。