如何为Apache Spark 2.3.0+创建自定义结构化流源

时间:2019-05-17 09:46:21

标签: apache-spark

我是NoSQL数据库公司Couchbase的开发人员,目前致力于更新our Spark Connector以支持Spark 2.3。

我遇到了我们的结构化流源CouchbaseSource的问题,它在2.2中可以正常工作,但在2.3中进行测试时,我得到了这个断言:

断言失败:getBatch从com.couchbase.spark.sql.streaming.CouchbaseSource@7c8d604f返回的数据框没有isStreaming = true

似乎CouchbaseSource.getBatch想要返回一个流式DataFrame,而不是它当前的标准格式-但是我发现很难创建它。我尝试过:

  1. 使用从sqlContext.readStream返回的DataStreamReader(这是文档所指向的地方),但是与我们之前使用的DataFrameReader不同,在我认为没有任何DataStreamReader方法可以提供现有RDD作为数据框之前。

  2. 查看Azure连接器如何解决this commit中的相同问题。他们使用内部Spark函数包[sql] internalCreateDataFrame,通过将其函数放入包org.apache.spark.sql.cosmosdb.util中,可以访问它们。我不知道这是合法的,并且对它的独创性印象深刻,但是肯定不是推荐的方法吗?

  3. 我已经研究了internalCreateDataFrame代码并尝试将其重新创建到我的项目中,但是遇到了各种封装问题-例如无法访问Dataset.ofRows,无法直接创建新的Dataset [Row] ...

我唯一能找到的教程是this one,它使用与Azure相同的internalCreateDataFrame方法。

如果需要的话,我会用它,但这似乎很脆弱。有更好的解决方案吗?

0 个答案:

没有答案