Spark操作parquet文件

 1 package code.parquet
 2
 3 import java.net.URI
 4
 5 import org.apache.hadoop.conf.Configuration
 6 import org.apache.hadoop.fs.{Path, FileSystem}
 7 import org.apache.spark.sql.{SaveMode, SparkSession}
 8
 9 /**
10   * Created by zhen on 2018/12/11.
11   */
12 object ParquetIO {
13   // 指定hdfs根节点
14   private val hdfsRoot = "hdfs://172.20.32.163:8020"
15   // 获取HDFS路径
16   def getPath(path: String): Path = {
17     if (path.toLowerCase().startsWith("hdfs://")) {
18       new Path(path)
19     } else {
20       new Path(hdfsRoot + path)
21     }
22   }
23   def main(args: Array[String]) {
24     val spark = SparkSession.builder().appName("parquet").master("local[2]").getOrCreate()
25     spark.sparkContext.setLogLevel("WARN") // 设置日志级别为WARN
26     val fsUri = new URI(hdfsRoot)
27     val fs = FileSystem.get(fsUri, new Configuration())
28     val path = hdfsRoot + "/YXFK/compute/KH_JLD"
29     val has = fs.exists(getPath(path))
30     if(has){
31       // 读取hdfs文件系统parquet数据
32       val dataFrame = spark.read.parquet(path)
33       dataFrame.show(10)
34       // 筛选,过滤数据
35       val result = dataFrame.select("JLDBH", "JLDDZ", "JLDMC", "JLFSDM", "CJSJ")
36         .filter("JLDDZ is not null AND JLFSDM = 3")
37         .sort("JLDBH")
38       result.show(10)
39       // 写入部分数据到本地
40       result.write.mode(SaveMode.Overwrite).parquet("E:\\result")
41     }
42     // 读取本地parquet数据
43     val localDataFrame = spark.read.parquet("E:\\jld.parquet")
44     localDataFrame.show(10)
45     // 读取写入数据验证
46     val resultSpace = spark.read.parquet("E:\\result")
47     resultSpace.show(10)
48   }
49 }

结果:

分析:Spark读取parquet数据默认为目录,因此可以只指定到你要读取的上级目录即可(本地模式除外),当保存为parquet时,会自动拆分,因此只能指定为上级目录。

原文地址:https://www.cnblogs.com/yszd/p/10107443.html

时间: 2024-08-01 00:44:55

Spark操作parquet文件的相关文章

Spark操作外部数据源--parquet

处理parquet数据 RuntimeException: file:/Users/arthurlance/app/spark-2.2.0-bin-2.6.0-cdh5.7.0/examples/src/main/resources/people.json is not a Parquet file val DEFAULT_DATA_SOURCE_NAME = SQLConfigBuilder("spark.sql.sources.default") .doc("The de

JAVA使用和操作properties文件

java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便.Properties 类存在于包 Java.util 中,该类继承自 Hashtable. 1. getProperty ( String  key) ,   用指定的键在此属性列表中搜索

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt

Spark操作Hbase

Spark 下操作 HBase(1.0.0 新 API) HBase经过七年发展,终于在今年2月底,发布了 1.0.0 版本.这个版本提供了一些让人激动的功能,并且,在不牺牲稳定性的前提下,引入了新的API.虽然 1.0.0 兼容旧版本的 API,不过还是应该尽早地来熟悉下新版API.并且了解下如何与当下正红的 Spark 结合,进行数据的写入与读取.鉴于国内外有关 HBase 1.0.0 新 API 的资料甚少,故作此文. 本文将分两部分介绍,第一部分讲解使用 HBase 新版 API 进行

C语言应用操作之文件

文件是C语言中德中的重点,小编在学习C语言基础知识的时候,大多数的输入输出操作是在屏幕上进行的,现在总算在文件学习上感觉到高大上的样纸.在以前数据量很小时,我们通常将信息从键盘在屏幕上进行输入输出的,but当数据量很大时,则显得很麻烦,因此,我们就要用到小编所说的文件(FILE). 本贴主要涉及到的知识点具有: 文件读操作: 文件写操作: 文件指针: 文件的定位: 缓冲文件系统和非缓冲文件系统. 一.文件(FILE)简介 在C语言中,文件是由一个个字符组成的,文件中的内容称为文件流. 文件可以分

C#操作txt文件

c# 操作txt文件 # 操作txt文件 c#创建文本 private const string FILE_NAME = "ErroLog.txt"; public static void WriteFile(string str) ...{ StreamWriter sr; if (File.Exists(FILE_NAME)) //如果文件存在,则创建File.AppendText对象 ...{ sr = File.AppendText(FILE_NAME); } else //如

(5) 如何用Apache POI操作Excel文件-----发现Apache的POI的Bug后,如何给Apache的POI报Bug?

在我上篇文章中,(4) 如何用Apache POI操作Excel文件-----发现了POI-3.12一个回归,通过测试POI-3.12的版本,我发现了一个bug,那么发现bug后,该如何处理.我们有2种处理方式,首先我们到Apache POI的bug库里面搜索,看别人有没有创建类似的bug,如果有创建的,这个是最好的结果,我们只需要关注这个bug什么时候被修复.如果没有搜索不到,这个时候我们就需要给Apache POI报bug了.那么,如何给Apache报Bug? 第一步: 打开https://

Windows 7 操作系统核心文件

[Windows\Boot]启动必须文件 [Windows\Help]帮助文件 [Windows\inf]安装硬件和软件时所需的inf文件 [Windows\System32]系统的主要组件 ActiveX文件(*.ocx) 应用程序 应用程序扩展(*.dll) 控制面板项(*.cpl) 设备驱动(*.drv) Boot所需文件 驱动 微软管理控制台程序 VBScript脚本(*.vbs) [Windows\winsxs]*.dll.*.ocx和其他文件的备份 [Users\AppData]应用

JAVA操作properties文件

java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便.一.properties文件test.properties------------------------------------------------------###########