我想知道哪些数据源可以在Spark中称为“智能”。根据《精通Apache Spark 2.x》一书,如果spark可以在数据源端处理数据,则可以将任何数据源称为smart。示例JDBC源。
我想知道MongoDB,Cassandra和Parquet是否也可以视为智能数据源?
答案 0 :(得分:1)
我相信智能数据源也可以。至少根据幻灯片41至42,您可以看到提到智能数据源和徽标,包括这些源(请注意,mongodb徽标不存在,但我相信它支持同一件事https://www.mongodb.com/products/spark-connector,请参阅“利用电源”来自Databricks的演示文稿:https://www.slideshare.net/databricks/bdtc2
我还能够找到一些支持MongoDB是智能数据源的信息,因为它在“精通Apache Spark 2.x”一书中用作示例:
“智能数据源的谓词下推”智能数据源是那些通过防止不必要的数据发送到Apache Spark而直接在数据所在的引擎中直接支持数据处理的数据源。
示例中是带有智能数据源的关系SQL数据库。考虑一个包含三列的表:column1,column2和column3,其中第三列包含时间戳。另外,考虑使用此JDBC数据源的ApacheSparkSQL查询,但仅使用投影和选择来访问列和行的子集。以下SQL查询是此类任务的示例:
从选项卡中选择column2,column3,其中column3> 1418812500
在智能数据源上运行,通过使SQL数据库根据时间戳对行进行过滤并删除column1,来利用数据的局部性。让我们看一个实际的示例,说明如何在Apache Spark MongoDB连接器中实现这一点。