Spark _23 _读取parquet文件创建DataFrame(二)
读取parquet文件创建DataFrame
注意:
- 可以将DataFrame存储成parquet文件。保存成parquet文件的方式有两种
df.write().mode(SaveMode.Overwrite)format("parquet").save("./sparksql/parquet");df.write().mode(SaveMode.Overwrite).parquet("./sparksql/parquet");
- SaveMode指定文件保存时的模式。
Overwrite:覆盖
Append:追加
ErrorIfExists:如果存在就报错
Ignore:如果存在就忽略
javaAPI:
【注】创建目录:parquet
package SparkSql;import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.SaveMode;/*** @author George* @description* 读取parquet文件创建DataFrame**/
public class ParquetDemo {public static void main(String[] args) {SparkConf conf = new SparkConf();conf.setAppName("pd");conf.setMaster("local");JavaSparkContext sc = new JavaSparkContext(conf);sc.setLogLevel("error");SQLContext sqlContext = new SQLContext(sc);JavaRDD<String> rdd1 = sc.textFile("./data/json");Dataset<Row> dataset = sqlContext.read().json(rdd1);/*** 将Dataset保存成parquet文件,SaveMode指定存储文件时的保存模式* 保存成parquet文件有以下两种方式:*///format 指定基础输出数据源。内置选项包括“parquet”、“json”等。dataset.write().mode(SaveMode.Overwrite).format("parquet").save("./data/parquet");
// dataset.write().mode(SaveMode.Overwrite).parquet("./data/parquet");dataset.show();/*** +----+------+* | age| name|* +----+------+* | 22|george|* |null| lucy|* | 20| honey|* | 20| KK|* +----+------+*//*** 加载parquet文件成DataFrame* 加载parquet文件有以下两种方式:*/Dataset<Row> load = sqlContext.read().format("parquet").load("./data/parquet");
// Dataset<Row> load = sqlContext.read().parquet("./data/parquet");load.show();/*** +----+------+* | age| name|* +----+------+* | 22|george|* |null| lucy|* | 20| honey|* | 20| KK|* +----+------+*/sc.stop();}
}
scalaAPI:
package SparkSqlimport org.apache.spark.sql.{SQLContext, SaveMode}
import org.apache.spark.{SparkConf, SparkContext}object ParquetScalaDemo {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local").setAppName("sd")val sc = new SparkContext(conf)sc.setLogLevel("error")val sqlContext = new SQLContext(sc)val rdd = sc.textFile("./data/json")val dataFrame = sqlContext.read.json(rdd)dataFrame.show()/*** +----+------+* | age| name|* +----+------+* | 22|george|* |null| lucy|* | 20| honey|* | 20| KK|* +----+------+*//*** 将dataframe保存成parquet文件*/
// dataFrame.write.format("parquet").save("./data/parquet")dataFrame.write.mode(SaveMode.Overwrite).parquet("./data/parquet")/*** 读取parquet文件*/val result = sqlContext.read.parquet("./data/parquet")
// val result = sqlContext.read.format("parquet").load("./data/parquet")result.show()/*** +----+------+* | age| name|* +----+------+* | 22|george|* |null| lucy|* | 20| honey|* | 20| KK|* +----+------+*/sc.stop()}
}
Spark _23 _读取parquet文件创建DataFrame(二)相关推荐
- pyspark 读取csv文件创建DataFrame的两种方法
pyspark 读取csv文件创建DataFrame的两种方法 方法一:用pandas辅助 from pyspark import SparkContext from pyspark.sql impo ...
- Spark _25 _读取Hive中的数据加载成DataFrame/DataSet(四)
由于Hive不在本地,操作略显麻烦.不过细心一点,分析错误,也还好,如果你搭建的hadoop是HA,需要多注意: 这里指出一个错误,如果你报了同类错误,可以参考:https://georgedage. ...
- Spark _24 _读取JDBC中的数据创建DataFrame/DataSet(MySql为例)(三)
两种方式创建DataSet 现在数据库中创建表不能给插入少量数据. javaapi: package SparkSql;import org.apache.spark.SparkConf; impor ...
- Spark读取Parquet格式的数据为Dataframe
SaveMode指定文件保存时的模式: OverWrite 覆盖 Append 追加 ErrorIfExists 如果存在就报错 Ignore 如果存在就忽略 val spark = SparkSes ...
- Spark _22 _创建DataFrame的几种方式(一)
创建DataFrame的几种方式 读取json格式的文件创建DataFrame 注意: json文件中的json数据不能嵌套json格式数据. DataFrame是一个一个Row类型的RDD,df.r ...
- Spark基础学习笔记23:DataFrame与Dataset
文章目录 零.本讲学习目标 一.Spark SQL (一)Spark SQL概述 (二)Spark SQL主要特点 1.将SQL查询与Spark应用程序无缝组合 2.Spark SQL以相同方式连接多 ...
- Spark SQL来读取现有Hive中的数据
Spark SQL主要目的是使得用户可以在Spark上使用SQL,其数据源既可以是RDD,也可以是外部的数据源(比如Parquet.Hive.Json等). Spark SQL的其中一个分支就是Spa ...
- Spark SQL程序实现RDD转换DataFrame
通过反射推断Schema 在Spark SQL中有两种方式可以在DataFrame和RDD进行转换 利用反射机制,推导包含某种类型的RDD,通过反射将其转换为指定类型的DataFrame,适用于提前知 ...
- spark 简单实战_SparkCore入门实战 (二)
一.键值对RDD数据分区器 键值对RDD数据分区器Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数.R ...
最新文章
- oracle能否生成mdb,oracle怎么导入.mdb文件
- 异步社区本周半价电子书(6月11-17日)
- java中日期计算时间差,java中依据,两个日期,计算时间差
- ES6之Module的语法(3)
- HTML+CSS+JS实现 ❤️echarts大数据统计图表实例❤️
- n分频器 verilog_时钟分频系列——分数分频电路的Verilog实现
- C语言,利用条件语句判断数的奇偶性。
- 20181211HW
- Ubuntu上: insufficient permissions for device解决
- python整人代码大全_整人代码大全
- Unity 实现部分模型流光效果
- 水中机器人电控方案设计
- 如何用photoshop快速换脸
- xcode6 下载地址
- uniapp uni-swipe-action 滑动删除
- [ecshop 资料] ecshop 手机 自动识别 ua 自动跳转到手机版本 miqinew ecmoban
- DI高速计数器编码器脉冲计数器PNPNPN输入模块高低电平
- .bat批处理(十一):替换字符串中包含百分号%的子串
- C语言程序设计编程题(六)15
- vba rnd_VBA Rnd()函数不正确,应使用什么代替