apache-spark - 对没有标头或架构的数据编写 Spark SQL 查询
问题描述
我想编写一个通用脚本,可以在没有标题或预定义模式的文件上运行 SQL 查询。例如,一个文件可能如下所示:
Bob,32
Alice, 24
Jane,65
Doug,33
Peter,19
SQL 查询可能是:
SELECT COUNT(DISTINCT ??)
FROM temp_table
WHERE ?? > 32
我想知道在??
.
解决方案
您可以在阅读时定义“自定义架构”
val schema = StructType(
StructField("field1", StringType, true) ::
StructField("field2", IntegerType, true) :: Nil
)
val df = spark.read.format("csv")
.option("sep", ",")
.option("header", "false")
.schema(schema)
.load("examples/src/main/resources/people.csv")
您也可以忽略最终以默认名称结尾的架构部分(非首选)
val df = spark.read.format("csv")
.option("sep", ",")
.option("header", "false")
.load("examples/src/main/resources/people.csv")
+-----+-----+
| _c0| _c1|
+-----+-----+
| Bob| 32 |
| .. | ... |
+-----+-----+
有了它,您可以填写 spark-sql 中的列名。
推荐阅读
- phoenix-framework - 慢计数终于解决了
- ruby - 使用救援块来处理响应代码错误。而不是下一步,我怎样才能在输出中输出状态代码而不是跳过它?
- google-cloud-platform - 交易将决定在 terraform 中使用地图
- android - 房间查询是否异步发生?
- javascript - 如何解决以下错误“”语法错误:预期名称,找到
" - java - 扩展 PageFactory 注释以支持 wait4element(By)?
- express - axios调用api,但不向客户端返回数据
- python - ValueError:列必须与键长度相同(使用python在多列中拆分列)
- selenium-chromedriver - 在 Robot Framework 中启用 ChromeDriver 日志和路径更新路径
- rxjs - RXJS 仅在以前的价值不是那么好并且我真的需要一个更好的时候才订阅