scala - scala项目导出文件
问题描述
我有以下查询
val CubeData = spark.sql (""" SELECT gender, department, count(bibno) AS count FROM borrowersTable, loansTable WHERE borrowersTable.bid = loansTable.bid GROUP BY gender,department WITH CUBE ORDER BY gender,department """)
我想导出 4 个具有特定数据和名称的文件。
File1 由性别和部门组成,文件名是geneder_departments File2 性别,空文件名是gender_null File3 部门,空文件名是departments_null File4 null,空文件名是null_null 这些文件是sql 查询的结果(带有cube )
我试试下面
val df1 = CubeData.withColumn("combination",concat(col("gender") ,lit(","), col("department")))
df1.coalesce(1).write.partitionBy("combination").format("csv").option("header", "true").mode("overwrite").save("final")
但我拿了超过 4 个文件 - 性别组合 - 部门。这些文件的名称也是随机的。是否可以选择这些文件的名称?
解决方案
也许这是 Spark 中的一个错误,我在您的查询中没有看到任何问题,但下面的查询似乎有效。如果它们是唯一列,则不需要指定表名。
val CubeData = spark.sql ("""
SELECT gender, department, count(bibno) AS count
FROM borrowersTable
JOIN loansTable USING(bid)
GROUP BY gender, department WITH CUBE
ORDER BY gender, department
""")
但是您的文件解析中似乎存在一些问题,请尝试以下操作:
val borrowersDF = spark.read.format("csv").option("delimiter", "|").option("header", "True").option("inferSchema", "True").load("BORROWERS.txt")
borrowersDF.createOrReplaceTempView("borrowersTable")
val loansDF = spark.read.format("csv").option("delimiter", "|").option("header", "True").option("inferSchema", "True").load("LOANS.txt")
loansDF.createOrReplaceTempView("loansTable")
val CubeData = spark.sql ("""
SELECT gender, department, count(bibno) AS count
FROM borrowersTable
JOIN loansTable USING(bid)
GROUP BY gender, department WITH CUBE
ORDER BY gender, department
""")
推荐阅读
- redux - 是否可以通过 redux 存储在兄弟组件之间共享承诺?
- json - Springboot - 空获取休息响应
- gulp - 每次我运行 gulp 任何东西时,我都会收到一个断言错误。- 必须指定任务功能
- asp.net - IIS 在 ASP.NET 核心 NOPCommerce 的子文件夹中部署 php 应用程序
- c# - 只能在 DependencyObject 的 DependencyProperty 上设置绑定?
- c# - 查询存储为 XML 的字符串属性
- javascript - JavaScript:获取对象的属性值
- c# - 优化将数据保存在程序内
- python - 在远程 python 进程上运行 python 代码
- powerbi - 情绪分析 Power BI