gpt4 book ai didi

sql - 如何将架构添加到 spark Scala 中另一个文件的文件

转载 作者:可可西里 更新时间:2023-11-01 16:35:28 26 4
gpt4 key购买 nike

我正在使用 Spark 并使用 Scala

我有两个 csv 文件,一个有列名,另一个有数据,我如何整合它们,以便我可以制作一个包含架构和数据的结果文件,然后我必须对该文件应用操作,例如groupby、cout 等,因为我需要计算这些列中的不同值。

所以任何人都可以在这里提供帮助,这将非常有帮助

我写了下面的代码,在读取它们之后从两个文件中创建了两个 DF,而不是我现在使用 union 加入两个 DF 如何将第一行作为模式,或者任何其他方式来继续这个。任何人都可以提出建议。

     val sparkConf = new SparkConf().setMaster("local[4]").setAppName("hbase sql")
val sc = new SparkContext(sparkConf)
val spark1 = SparkSession.builder().config(sc.getConf).getOrCreate()
val sqlContext = spark1.sqlContext

val spark = SparkSession
.builder
.appName("SparkSQL")
.master("local[*]")
.getOrCreate()
import spark.implicits._
val lines = spark1.sparkContext.textFile("C:/Users/ayushgup/Downloads/home_data_usage_2018122723_1372672.csv").map(lines=>lines.split("""\|""")).toDF()
val header = spark1.sparkContext.textFile("C:/Users/ayushgup/Downloads/Header.csv").map(lin=>lin.split("""\|""")).toDF()

val file = header.unionAll(lines).toDF()

最佳答案

spark.sparkContext.textFile() 将返回 rdd 并且不会推断架构,即使您正在该 rdd 之上执行 .toDF()

sc.textFile() 用于读取非结构化文本文件。你应该使用

spark.read.format("csv").option("header",true").option("inferSchema","true").load("..path.to.csv")

从标题中获取架构。

最好将文件cat 放在一起,创建新的csv 并在HDFS 中读取它们

cat header.csv home_data_usage_2018122723_1372672.csv >> new_home_data_usage.csv

然后

hadoop fs -copyFromLocal new_home_data_usage.csv <hdfs_path>

然后使用

spark.read.format("csv").option("header",true").option("inferSchema","true").load("..path.to.csv")

关于sql - 如何将架构添加到 spark Scala 中另一个文件的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54253895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com