今天工做时猛然发现,spark1.6.1和spark1.3.1的区别,真是开源的说该就改了啊!!!java
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.10</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.10</artifactId> <version>1.3.1</version> </dependency>
在1.6.1版本中spark-sql已经添加了DataFrameReader、DataFrameWriter,然而在1.3.1中并无这两个,这是否是个重大的发现呢各位,来来来看看怎么用的吧,一块儿研究研究咱们!mysql
var rdd = sqlContext.sql("select * from mydb.t_user")
rdd: org.apache.spark.sql.DataFrame = [id: int, name: string]
rdd.show()
rdd.write.json("/upload/data_json")sql
读取data_json的数据
val dataFrame = sqlContext.read.json("/upload/data_json/part*")
dataFrame: org.apache.spark.sql.DataFrame = [id: bigint, name: string]数据库
将dataFrame注册成表
val f1 = dataFrame.registerTempTable("tb_user")
写入到本地文件系统
f1.write.text("/upload/data_text")apache
写入到另外一张表
f1.write.saveAsTable("temp_user")
向表里面追加数据
f1.write.insertInto("temp_user")json
写入到关系型数据库
val prop = new java.util.Properties();
prop.put("user", "root")
prop.put("password", "123456")
//将dataFrame中的数据写入到关系型数据库
f1.write.jdbc("jdbc:mysql://localhost:3306/hibernate","t_user",prop)spa
读取关系型数据库的数据
建立dataFrame
经过sqlContext对象的jdbc方法将关系型数据库的数据装载到dataFrame
val user_rdd = sqlContext.read.jdbc("jdbc:mysql://localhost:3306/hibernate","t_user",prop)
user_rdd: org.apache.spark.sql.DataFrame = [id: int, username: string, password: string, email: string, birthday: timestamp]hibernate