Hadoop Parquet File 文件的读取
来源:互联网 发布:淘宝店公告栏图片 编辑:程序博客网 时间:2024/06/01 07:14
产生parquet数据
这里通过Spark SQL来从CSV文件中读取数据,然后把这些数据存到parquet文件去。
SparkContext context = new SparkContext(new SparkConf().setMaster("local").setAppName("parquet")); SQLContext sqlContext = new SQLContext(context); DataFrame dataFrame = sqlContext.read().format("com.databricks.spark.csv") .option("header","true") //这里如果在csv第一行有属性的话,没有就是"false" .option("inferSchema","true")//这是自动推断属性列的数据类型。 .load("/home/lake/world.csv"); dataFrame.write().parquet("/home/lake/parquetfile");
这里是先从CSV中读取相应的数据,然后将其写入到parquet文件中,下面是CSV中的数据,你也可以自己定义里面的数据.
name,age,sexshenlei,19,manshenlei,19,manshenlei,19,man
读取Parquet 文件的模式信息
Configuration config = new Configuration(); ParquetMetadata readFooter = ParquetFileReader.readFooter(config, path); Map<String,String> schema = readFooter.getFileMetaData().getKeyValueMetaData();; String allFields = schema.get("org.apache.spark.sql.parquet.row.metadata");
allFiedls的值就是各字段的名称和具体的类型,整体是一个json格式进行展示的。具体的内容是
{"type":"struct","fields":[{"name":"name","type":"string","nullable":true,"metadata":{}},{"name":"age","type":"integer","nullable":true,"metadata":{}}]}
读取Parquet 文件中的数据
下面是我将每行数据弄成json格式来进行输出的
ParquetMetadata readFooter = ParquetFileReader.readFooter(fs.getConf(), path, ParquetMetadataConverter.NO_FILTER); MessageType schema = readFooter.getFileMetaData().getSchema(); List<Type> columnInfos = schema.getFields(); ParquetReader<Group> reader = ParquetReader.builder(new GroupReadSupport(), path). withConf(fs.getConf()).build(); int count = 0; Group recordData = reader.read(); while (count < 10 && recordData != null) { int last = columnInfos.size() - 1; StringBuilder builder = new StringBuilder(); builder.append("{\""); for (int j = 0; j < columnInfos.size(); j++) { if (j < columnInfos.size() - 1) { String columnName = columnInfos.get(j).getName(); String value = recordData.getValueToString(j, 0); builder.append(columnName + "\":\"" + value + "\","); } } String columnName = columnInfos.get(last).getName(); String value = recordData.getValueToString(last, 0); System.out.println(builder.toString()); count++; recordData = reader.read(); } } catch (Exception e) { } }
0 0
- Hadoop Parquet File 文件的读取
- Java API读取CDH-Hadoop Parquet文件
- spark读取json,parquet文件
- Hadoop Sequence File 文件的读取和写入
- Hadoop Sequence File 文件的读取和写入
- spark读取gz文件与parquet文件
- 基因数据处理73之从HDFS读取fasta文件存为Adam的parquet文件
- Hadoop的整文件读取
- Parquet_7. 通过命令行来读取 Parquet 文件 -- 待完善
- spark 批量读取HDFS(hive分区)parquet文件
- 基因数据处理74之从HDFS读取vcf文件存为Adam的parquet文件(有问题)
- 基因数据处理75之从HDFS读取vcf文件存为Adam的parquet文件(成功)
- parquet file compress问题
- 踩坑事件:windows操作系统下的eclipse中编写SparkSQL不能从本地读取或者保存parquet文件
- spark 读取hive parquet
- Android 读取文件File的大小
- spark 读取hadoop 格式的文件
- 多线程读取文件File
- Daemon函数的用法
- sql必知必会学习笔记-一,了解SQL
- 那些年困扰我们的委托(C#)
- Eclipse里安装反编译软件
- js处理后台的时间格式
- Hadoop Parquet File 文件的读取
- Zookeeper系列(三)常见的shell命令和基本的API方法
- Animation and Graphics
- Adobe Acrobat设置最近打开文件
- MySQL5.6解压版,配置好以后设置初始密码
- linux锁定关键系统文件
- PL/SQL Developer官网下载地址
- sed命令详解
- 和幼师谈恋爱的日常_要亲亲要抱抱要举高高