java - 如何读取以空格分隔的文本文件并将其保存到 Hive 中?

标签 java apache-spark apache-spark-sql apache-spark-1.6

我有一个如下所示的字符串。第一行是标题,其余是列值。 我想从 String 创建一个数据帧(Spark 1.6 和 Java7),并将 col3 和 col4 下的值转换为 DOUBLE 。

col1 col2 col3 col4 col5
val1 val2 val3 val4 val5
val6 val7 val8 val9 val10
val11 val12 val13 val14 val15

为上述创建数据框后,我有两个字段位于第一行,其值是常量。

const1 const2 col1 col2 col3 col4 col5
const1 const2 val1 val2 val3 val4 val5
const1 const2 val6 val7 val8 val9 val10
const1 const2 val11 val12 val13 val14 val15

我想使用模式(const1 int、const2 int、col1 double、col2 double、col3 double、col4 double、col5 double)将上述数据帧写入 hive 表。 我正在使用 Spark 1.6 和 Java7 。

最佳答案

我强烈建议使用最新最好的Spark 2.1.1开箱即用地支持 CSV 文件。

<小时/>

除非我误会了,Spark 1.6 中的 CSV 支持是使用 spark-csv包。

启动 Spark 环境并加载包:

--packages com.databricks:spark-csv_2.11:1.5.0

这为您提供了 csv 格式支持。

来自包的 homepage :

SQLContext sqlContext = new SQLContext(sc);
DataFrame df = sqlContext.read()
    .format("com.databricks.spark.csv")  // <-- enables csv support in Spark SQL
    .option("inferSchema", "true")
    .option("header", "true")
    .load("cars.csv");

您必须使用delimiter选项,因为它默认为逗号。

delimiter by default columns are delimited using ,, but delimiter can be set to any character

将文件作为 DataFrame 加载后,您可以使用 DataFrame.withColumn 添加常量列方法:

public DataFrame withColumn(String colName, Column col)

Returns a new DataFrame by adding a column or replacing the existing column that has the same name.

完成后,保存到 Hive 只需使用 SQLContextwrite() 方法即可:

write().saveAsTable(tableName)

参见DataFrame API .

关于java - 如何读取以空格分隔的文本文件并将其保存到 Hive 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44062148/

相关文章:

java - this 指的是在子类对象上调用非重写方法时会发生什么?

apache-spark - Spark工作内存

apache-spark - Apache Spark : Reference pointer to the parent RDD

java - Spark Dataframe Write to CSV 在 Standalone Cluster Mode 下创建_temporary 目录文件

r - 在 SparkR 中删除 DataFrame 的列

python - Pyspark:TaskMemoryManager:无法分配页面:需要错误分析帮助

java - Java API 中单例类的示例

java - 我们如何在cacheManager中管理多个用户...

java - request.getSession().getId() 与 request.getRequestedSessionId()

java - Spark sql 连接 mongo-spark 和 Spark-redshift 连接器的性能问题