当前位置:   article > 正文

06 ,基础操作 : 转 parquet ,查看 parquet ,转 csv ,查看 csv ,总条数_parquet转csv

parquet转csv

0 ,parquet 分隔符 :

  1. 不支持指定分隔符
  2. 只能用默认分隔符 : \001
  3. 官方资料 :
    在这里插入图片描述

1 ,count csv :

  1. 命令 :
spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode client --class lifecycle01_tool.Tool02_CountCsv s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar lifecyclebigdata/dataWareHouse/BALABALA/09_testData/01_csv
  • 1
  1. 结果 :
9
  • 1

2 ,look csv :

  1. 命令 :
spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode client --class lifecycle01_tool.Tool03_LookCsv s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar lifecyclebigdata/dataWareHouse/BALABALA/09_testData/01_csv
  • 1
  1. 结果 :
+----+----+-------+
|学号|姓名|年龄   |
+----+----+-------+
|7   |sfl |3223432|
|8   |fe  |432    |
|9   |dsds|9868   |
|4   |dd  |50     |
|5   |ee  |1210   |
|6   |ff  |ds     |
|1   |aa  |10     |
|2   |bb  |20     |
|3   |cc  |30     |
+----+----+-------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3 ,csv --> parquet : 分隔符 ( \001 )

  1. 原代码 :
package lifecycle01_tool
import org.apache.hadoop.yarn.webapp.hamlet.HamletSpec.COL
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
import scala.collection.mutable.ArrayBuffer

//  入参 2 个 : csv 路径,parquet 路径
object Tool04_ParseCsvToParquetSnappy {
    
    def main(args: Array[String]): Unit = {
        //  1 ,入参 : 输入路径,输出路径,列名字
        val path_in: String = args(0)
        val path_out: String = args(1)
        val colNames: Array[String] = args(2).split(",")
        
        //  2 ,获取上下文
        val spark: SparkSession = Tool01_SparkSession.getSpark()
        
        //  3 ,隐式转换
        import org.apache.spark.sql.types._
        import org.apache.spark.sql.functions._
        
        //  1 ,读文件 : 分隔符  ( , ) ,不要第一行
        val df: DataFrame = spark.read.option("header","true").option("delimiter",",").csv("s3a://"+path_in)
        //  2 ,建表 :
        val res: DataFrame = df.toDF(colNames:_*)
        //  3 ,输出 :
        res.write.option("compression","snappy").option("delimiter","\001").option("header","true").parquet("s3a://"+ path_out)
        spark.close()
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  1. 执行 : spark 列名需要与 hive 列名保持一致
spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode cluster --class lifecycle01_tool.Tool04_ParseCsvToParquetSnappy s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar lifecyclebigdata/dataWareHouse/BALABALA/09_testData/01_csv lifecyclebigdata/dataWareHouse/BALABALA/09_testData/02_parquet/res "id,name,age"
  • 1

4 ,count parquet :

  1. 执行 :
spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode client --class lifecycle01_tool.Tool05_CountParquet s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar lifecyclebigdata/dataWareHouse/BALABALA/09_testData/02_parquet/res
  • 1
  1. 结果 :
9
  • 1

5 ,look parquet :

  1. 执行 :
spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode client --class lifecycle01_tool.Tool06_LookParquet s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar lifecyclebigdata/dataWareHouse/BALABALA/09_testData/02_parquet/res
  • 1
  1. 结果 :
+----+----+-------+
|学号|姓名|年龄   |
+----+----+-------+
|7   |sfl |3223432|
|8   |fe  |432    |
|9   |dsds|9868   |
|4   |dd  |50     |
|5   |ee  |1210   |
|6   |ff  |ds     |
|1   |aa  |10     |
|2   |bb  |20     |
|3   |cc  |30     |
+----+----+-------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

6 ,parquet --> csv :

spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode cluster --class lifecycle01_tool.Tool07_ParseParquetToCsv s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar lifecyclebigdata/dataWareHouse/BALABALA/09_testData/02_parquet/res lifecyclebigdata/dataWareHouse/BALABALA/09_testData/03_csv/res
  • 1

7 ,检查数据 : 正确

  1. 条数 : 正确
  2. 数据样子 :正确
spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode client --class lifecycle01_tool.Tool02_CountCsv s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar lifecyclebigdata/dataWareHouse/BALABALA/09_testData/03_csv/res

spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode client --class lifecycle01_tool.Tool03_LookCsv s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar lifecyclebigdata/dataWareHouse/BALABALA/09_testData/03_csv/res
  • 1
  • 2
  • 3

8 ,spark 的 parquet 存储,分隔符 :

  1. 不支持指定分隔符。
  2. 只能使用默认分隔符 : \001

9 ,建表 : 外部表,位置,默认分隔符,snappy,parquet

  1. sql 语句 :
create external table person(id string,name string,age string) 
stored as parquet 
location 's3://lifecyclebigdata/dataWareHouse/BALABALA/09_testData/02_parquet/res' 
TBLPROPERTIES ('parquet.compress'='SNAPPY');
  • 1
  • 2
  • 3
  • 4
  1. spark 代码 :
package lifecycle01_tool

import org.apache.spark.sql.{DataFrame, SparkSession}

object Tool08_CreateTable {
    def main(args: Array[String]): Unit = {
        
        //  1 ,上下文
        val spark: SparkSession = Tool01_SparkSession.getHiveSpark()
        //  2 ,建表 sql
        val sql =
            "create external table person (id string,name string,age string) "+
                "stored as parquet "+
                "location 's3://lifecyclebigdata/dataWareHouse/BALABALA/09_testData/02_parquet/res' "+
                "TBLPROPERTIES ('parquet.compress'='SNAPPY')"
        spark.sql("use default")
        spark.sql(sql)
        spark.close()
        
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  1. 执行 :
spark-submit --master yarn --num-executors 5 --executor-cores 3 --executor-memory 6144m --deploy-mode client --class lifecycle01_tool.Tool08_CreateTable s3://lifecyclebigdata/dataWareHouse/BALABALA/00jar/03_hive/hiveLifeCycle-1.0-SNAPSHOT.jar
  • 1
  1. 效果 :
select * from person;
=================================
7       sfl     3223432
8       fe      432
9       dsds    9868
4       dd      50
5       ee      1210
6       ff      ds
1       aa      10
2       bb      20
3       cc      30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/516035
推荐阅读
相关标签
  

闽ICP备14008679号