Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 生成Spark模式代码/持久化和重用模式_Apache Spark_Apache Spark Sql_Spark Streaming_Spark Structured Streaming_Delta - Fatal编程技术网

Apache spark 生成Spark模式代码/持久化和重用模式

Apache spark 生成Spark模式代码/持久化和重用模式,apache-spark,apache-spark-sql,spark-streaming,spark-structured-streaming,delta,Apache Spark,Apache Spark Sql,Spark Streaming,Spark Structured Streaming,Delta,我正在从拼花地板数据源实现一些Spark结构化流式转换。为了将数据读入流数据帧,必须指定模式(不能自动推断)。模式非常复杂,手动编写模式代码将是一项非常复杂的任务 你能建议我们去走走吗?目前,我正在预先创建一个批处理数据帧(使用相同的数据源),Spark推断模式,然后将模式保存到Scala对象,并将其用作结构化流式读取器的输入 我认为这不是一个可靠或性能良好的解决方案。请建议如何自动生成架构代码或以某种方式将架构保存在文件中并重新使用。来自文档: 默认情况下,来自基于文件的源的结构化流需要您 指

我正在从拼花地板数据源实现一些Spark结构化流式转换。为了将数据读入流数据帧,必须指定模式(不能自动推断)。模式非常复杂,手动编写模式代码将是一项非常复杂的任务

你能建议我们去走走吗?目前,我正在预先创建一个批处理数据帧(使用相同的数据源),Spark推断模式,然后将模式保存到Scala对象,并将其用作结构化流式读取器的输入

我认为这不是一个可靠或性能良好的解决方案。请建议如何自动生成架构代码或以某种方式将架构保存在文件中并重新使用。

来自文档:

默认情况下,来自基于文件的源的结构化流需要您 指定模式,而不是依赖Spark来推断它 自动地此限制可确保使用一致的架构 用于流式查询,即使在失败的情况下也是如此。临时的 在用例中,您可以通过设置
spark.sql.streaming.schemaReference
true


您还可以打开一个shell,在启用了自动模式推断的情况下读取一个拼花地板文件,然后。您只需执行一次,因此它可能比您现在使用的类似解决方法更快/更有效。

嘿,我认为将模式保存为JSON并重用它是一个好主意,但您链接的示例对我不起作用。我在尝试使用模式时遇到以下错误:重载的方法值模式和备选方案:(schemaString:String)org.apache.spark.sql.streaming.DataStreamReader(schema:org.apache.spark.sql.types.StructType)org.apache.spark.sql.streaming.DataStreamReader无法应用于(选项[org.apache.spark.sql.types.StructType])打开一个spark外壳,使用SparkSession.read.parquet()并使用其模式,将一个拼花文件作为普通、旧的非流式数据帧加载,怎么样?