当前位置: 首页 > 知识库问答 >
问题:

临时表上的多个SQL失败

禹昆
2023-03-14
Spark Version: 1.6.2.   
val rdd = sc.textFile("hdfs://my_server:8020/2017/*/*/*")
val table = sqlc.read.json(rdd).cache()

table.registerTempTable("my_table")

sql("""
    | SELECT contentsId,
    |   SUM(CASE WHEN gender = 'M' then 1 else 0 end)
    | FROM my_table
    | GROUP BY contentsId
  """.stripMargin)
  .write.format("com.databricks.spark.csv")
  .save("hdfs://my_server:8020/gender.csv")

sql("""
    | SELECT contentsId,
    |   SUM(CASE WHEN age > 0 AND age < 20 then 1 else 0 end),
    |   SUM(CASE WHEN age >= 20 AND age < 30 then 1 else 0 end)
    | FROM my_table
    | GROUP BY contentsId
  """.stripMargin)
  .write.format("com.databricks.spark.csv")
  .save("hdfs://my_server:8020/age.csv")

提前感谢!

共有1个答案

欧阳正德
2023-03-14

我认为您可以尝试只对像这样的文件应用筛选器。

val filesRDD = rdd.filter{path => (new java.io.File(path).isFile)}

这将删除RDD中包含的所有目录,并在第二次保存数据文件时使用以下

sql("""
    | SELECT contentsId,
    |   SUM(CASE WHEN age > 0 AND age < 20 then 1 else 0 end),
    |   SUM(CASE WHEN age >= 20 AND age < 30 then 1 else 0 end)
    | FROM my_table
    | GROUP BY contentsId
  """.stripMargin)
  .write.format("com.databricks.spark.csv")
  .mode("append")
  .save("hdfs://my_server:8020/gender.csv")

如果存储值相同,或者尝试将第二个DataFrame存储到其他文件

 类似资料:
  • 我找不到任何东西来解释为什么当调用一个SP时,它根据记录是否已经存在于我得到的时态表上来执行插入或更新 系统版本表“MYDB.dbo”上的数据修改失败。“TemporalExample”,因为受影响记录的事务时间早于时段开始时间。 那是什么意思?这似乎只是偶尔发生,我不知道是不是因为我在运行多线程代码,而azure sql只是不喜欢当它是一个时态表时相互连接到同一个表?我正在浏览实体框架(最新版本

  • 主要内容:示例,删除临时表关系型数据库支持临时表,这是一项很棒的功能。临时表的概念由 SQL Server 引入,用来存储和处理中间结果。 临时表在会话期间创建,会话结束后自动被删除。临时表可以和普通表一样执行各种操作,比如 SELECT、UPDATE、INSERT、JOIN 等。 MySQL 3.23 及其更高版本才支持临时表,如果您使用的 MySQL 版本低于 3.23,则不能使用临时表,但可以使用堆表(Heap Ta

  • 我很困惑,因为当我在SQLite上运行这个查询时。 在MacOS Mojave SQLITE上,我在“FROM”上得到一个语法错误。没有更多的细节。 这对Postgres有效。 我是否以错误的方式阅读了 SQLite 文档?https://sqlite.org/lang_update.html 以下是查询: 设置查询:

  • 本文向大家介绍对比Oracle临时表和SQL Server临时表的不同点,包括了对比Oracle临时表和SQL Server临时表的不同点的使用技巧和注意事项,需要的朋友参考一下 Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧,希望能够对您有所帮助。 1.简介 Oracle数据库除了可以

  • 是一个使用spark 2注册的表。()缓存? 使用齐柏林飞艇,经过大量计算后,我在scala代码中注册了一个,然后在中我想访问它,并进一步过滤它。 它会使用内存缓存版本的表吗?还是每次都要重建?

  • 本文向大家介绍sql的临时表使用小结,包括了sql的临时表使用小结的使用技巧和注意事项,需要的朋友参考一下 1、创建方法: 方法一: create table TempTableName 或 select [字段1,字段2,...,] into TempTableName from table 方法二: create table tempdb.MyTempTable(Tid int) 说明: (1