我是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,而不是它当前的标准格式-但是我发现很难创建它。我尝试过:
使用从sqlContext.readStream返回的DataStreamReader(这是文档所指向的地方),但是与我们之前使用的DataFrameReader不同,在我认为没有任何DataStreamReader方法可以提供现有RDD作为数据框之前。
查看Azure连接器如何解决this commit中的相同问题。他们使用内部Spark函数包[sql] internalCreateDataFrame,通过将其函数放入包org.apache.spark.sql.cosmosdb.util中,可以访问它们。我不知道这是合法的,并且对它的独创性印象深刻,但是肯定不是推荐的方法吗?
我已经研究了internalCreateDataFrame代码并尝试将其重新创建到我的项目中,但是遇到了各种封装问题-例如无法访问Dataset.ofRows,无法直接创建新的Dataset [Row] ...
我唯一能找到的教程是this one,它使用与Azure相同的internalCreateDataFrame方法。
如果需要的话,我会用它,但这似乎很脆弱。有更好的解决方案吗?