【发布时间】:2018-04-24 11:01:51
【问题描述】:
我正在尝试理解 Spark SQL 的概念,并且想知道是否可以将 Spark SQL 用作内存数据库,类似于 H2/SQLite?
处理完 100 个文件中的所有记录后,我可以将数据保存为表格格式,并且可以查询表以获取结果,而不是搜索文件。这有意义吗?
Dataset<Row> results = spark.sql("SELECT distinct(name) FROM mylogs");
在运行时,如果用户选择从表“mylogs”中获取不同的名称,它应该从表中获取(而不是从派生表的基础文件中)。
我注意到,Spark SQL 确实会扫描文件以再次获取数据,直到它扫描所有 100 个文件并获取数据,用户必须等待响应。
这是 Spark 的用例吗?有没有更好的方法来实现这一点?
【问题讨论】:
-
使用缓存/持久临时表或在内存中查看,如果大小不是太大并且表在其生命周期的大部分时间里都是只读的。
-
你可以,但这将是一个非常糟糕的选择。它不是数据库,也绝对不是内存数据库,即使与这些有一些共同点。
标签: apache-spark apache-spark-sql