如何使用 Spark 数据帧将 csv 数据加载到配置单元中?

Posted

技术标签:

【中文标题】如何使用 Spark 数据帧将 csv 数据加载到配置单元中?【英文标题】:How I can load csv data into hive using Spark dataframes? 【发布时间】:2017-02-16 08:02:53 【问题描述】:

我正在尝试将数据从 csv 文件加载到 Hive。我正在使用 Spark 的 JAVA API 来执行此操作。我想知道如何使用 spark 数据帧在 hive 中加载数据。 以下是我尝试使用 JSON 制作的内容:

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SQLContext;
public class first 
public static void main (String[] args)

    String inputFileName = "samples/big.txt" ;
    String outputDirName = "output" ;

    SparkConf conf = new SparkConf().setAppName("org.sparkexample.WordCount").setMaster("local");
    JavaSparkContext context = new JavaSparkContext(conf);
    @SuppressWarnings("deprecation")
    SQLContext sc = new SQLContext(context);
    DataFrame input = sc.jsonFile(inputFileName);
    input.printSchema();


但不知道如何使用 csv 制作它。我对 databricks 提供的 Spark-csv 有一些想法。 请让我知道我该怎么做。

【问题讨论】:

您使用的是什么版本的 spark?阅读 csv 或将生成的数据框放入 hive 也是您的问题吗? 您可以使用 spark-csv 包将 csv 文件读取到 dataframe 中,然后使用它将其加载到 hive table 中。 github.com/databricks/spark-csv @AssafMendelson Spark 版本 1.6.0 @RajatMishra 我也在尝试。但是不明白问题所在。第一次使用 Spar 和 java。一直在和 Scala 打交道,但看不懂 java。 对不起,我使用的是 2.1.0 版本 【参考方案1】:

在 spark 2.x.x 上内置了 csv(不需要包) 试着这样读:

SparkSession spark = SparkSession
.builder()
.appName("org.sparkexample.WordCount")
.master("local[*]") .
.enableHiveSupport()
.getOrCreate();
DataFrame input = spark.read.csv(inputFileName)

您还可以添加选项,例如:

DataFrame input = spark.read.option("header","true").csv(inputFileName)

将第一行视为标题并相应地给出列名

【讨论】:

这样我可以写到蜂巢吗?实际上,现在阅读是一个与写作斗争的问题。 你可以试试***.com/questions/40122201/…。我没有配置配置单元,所以我无法检查自己

以上是关于如何使用 Spark 数据帧将 csv 数据加载到配置单元中?的主要内容,如果未能解决你的问题,请参考以下文章

将火花数据帧写入固定宽度文件java spark

将 CSV 数据加载到 Dataframe 并使用 Apache Spark (Java) 转换为 Array

Spark 数据帧 CSV 与 Parquet

如何加载包含多行记录的 CSV 文件?

如何使用 Spark 加载 JSON(保存在 csv 中的路径)?

Spark-SQL:如何将 TSV 或 CSV 文件读入数据框并应用自定义模式?