当前位置:  开发笔记 > 编程语言 > 正文

实木复合地板架构和Spark

如何解决《实木复合地板架构和Spark》经验,为你挑选了1个好方法。

我正在尝试将CS​​V文件转换为镶木地板,并且我正在使用Spark来完成此操作。

SparkSession spark = SparkSession
    .builder()
    .appName(appName)
    .config("spark.master", master)
    .getOrCreate();

Dataset logFile = spark.read().csv("log_file.csv");
logFile.write().parquet("log_file.parquet");

现在的问题是我没有定义架构,列看起来像这样(输出在spark中使用printSchema()显示)

root
 |-- _c0: string (nullable = true)
 |-- _c1: string (nullable = true)
 |-- _c2: string (nullable = true)
 ....

csv在第一行有名称,但是我想它们被忽略了,问题是只有几列是字符串,我也有整数和日期。

使用Spark,基本上没有Avro或其他任何功能(从未使用过Avro)。

我定义模式有哪些选择?如何选择?如果我需要用其他方式编写镶木地板文件,那么只要它是一种快速简便的解决方案,就没有问题。

(我正在使用Spark Standalone进行测试/不知道Scala)



1> Rajat Mishra..:

尝试使用目前存在的.option(“ inferschema”,“ true”)Spark-csv软件包。这将自动从数据推断模式。

您还可以使用结构类型为数据定义自定义架构,并使用.schema(schema_name)来基于自定义架构读取。

val sqlContext = new SQLContext(sc)
val customSchema = StructType(Array(
    StructField("year", IntegerType, true),
    StructField("make", StringType, true),
    StructField("model", StringType, true),
    StructField("comment", StringType, true),
    StructField("blank", StringType, true)))

val df = sqlContext.read
    .format("com.databricks.spark.csv")
    .option("header", "true") // Use first line of all files as header
    .schema(customSchema)
    .load("cars.csv")

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有