1.读取txt文件
scala版本
package com.kevin.scala.dataframe
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SQLContext
/**
* 读取txt文件转成DataFrame形式操作
*/
object DataFrameTxt {
def main(args: Array[String]): Unit = {
// 1.创建sparkconf
val conf = new SparkConf().setAppName("DataFrameTxt").setMaster("local")
// 2.创建sc
val sc = new SparkContext(conf)
// 3.创建sqlcontext
val sqlContext = new SQLContext(sc)
val line = sc.textFile("DTSparkSql\\src\\main\\resources\\person.txt")
import sqlContext.implicits._
// 4.读取文件用map切分,再用map将数据装成Person类型,toDF转成DataFrame
line.map(_.split(",")).map(p => new Person(p(0),p(1),p(2).trim.toInt)).toDF.show()
// 5.关闭sc
sc.stop()
}
}
Java版本
package com.kevin.java.dataframe;
import com.kevin.java.entity.Person;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;
/**
* @author kevin
* @version 1.0
* @description 读取txt文件转成DataFrame形式操作
* @createDate 2019/1/6
*/
public class DataFrameTxt {
public static void main(String[] args) {
// 1.创建SparkConf并设置作业名称和模式
SparkConf conf = new SparkConf().setAppName("DataFrameTxt").setMaster("local");
// 2.基于sparkConf创建SparkContext
JavaSparkContext sc = new JavaSparkContext(conf);
// 3.创建SQLContext对象对sql进行分析处理
SQLContext sqlContext = new SQLContext(sc);
// 4.读取文件数据
String file = "DTSparkSql\\src\\main\\resources\\person.txt";
JavaRDD<String> lineRDD = sc.textFile(file);
// 5.获取每一行txt数据转为person类型
JavaRDD<Person> map = lineRDD.map(new Function<String, Person>() {
@Override
public Person call(String line) throws Exception {
String[] s = line.split(",");
Person p = new Person();
p.setId(s[0]);
p.setName(s[1]);
p.setAge(Integer.valueOf(s[2]));
return p;
}
});
// 6.将person类型的数据转为DataFrame表
DataFrame df = sqlContext.createDataFrame(map, Person.class);
// 7.查看所有数据,默认前20行
df.show();
// 8.关闭sc
sc.close();
}
}
2.读取Json文件
scala版本
package com.kevin.scala.dataframe
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
/**
* 读取json格式文件转为DataFrame表形式分析处理
* json文件中不能嵌套json格式的内容
* 1.读取json格式两种方式
* 2.df.show()默认显示前20行,使用df.show(行数)显示多行
* 3.df.javaRDD/(scala df.rdd)将DataFrame转换成RDD
* 4.df.printSchema()显示DataFrame中Schema信息
* 5.dataFrame自带的API操作DataFrame,一般不使用
* 6.使用sql查询,先将DataFrame注册成临时表:df.registerTempTable("jtable"),
* 再使用sql,怎么使用sql?sqlContext.sql("sql语句")
* 7.不能加载嵌套的json文件
* 8.df加载过来之后将列安装ascii排序
*/
object DataFrameJson {
def main(args: Array[String]): Unit = {
// 1.创建SparkConf
val conf = new SparkConf().setAppName("DataFrameJson").setMaster("local")
// 2.创建SparkContext
val sc = new SparkContext(conf)
// 3.创建SQLContext对象对sql进行分析处理
val sqlContext = new SQLContext(sc)
val file = "DTSparkSql\\src\\main\\resources\\json"
// 4.读取json文件并转成DataFrame表
val df = sqlContext.read.