引用Spark DataFrames,Datasets和SQL手册:
Spark中还没有包含少数Hive优化.由于Spark SQL的内存计算模型,其中一些(如索引)不太重要.其他版本用于将来的Spark SQL版本.
作为Spark的新手,我有点困惑,原因有两个:
Spark SQL旨在处理大数据,至少在我的用例中,数据大小远远超过可用内存的大小.假设这并不罕见,"Spark SQL的内存计算模型"是什么意思?Spark SQL是否仅适用于数据适合内存的情况?
即使假设数据适合内存,对非常大的数据集进行全扫描也需要很长时间.我在内存数据库中读取了这个反对索引的论点,但我并不相信.那里的例子讨论了一个10,000,000记录表的扫描,但这不是真正的大数据.扫描具有数十亿条记录的表可能导致"SELECT x WHERE y = z"类型的简单查询永远不会立即返回.
我理解索引有诸如较慢的INSERT/UPDATE,空间要求等缺点.但在我的用例中,我首先处理并将大批数据加载到Spark SQL中,然后将这些数据作为一个整体进行探索,而无需进一步修改.Spark SQL对于初始分布式处理和数据加载很有用,但缺乏索引使得交互式探索比我预期的更慢,更麻烦.
我想知道为什么Spark SQL团队认为索引不重要到它的路线图之外的程度.是否有不同的使用模式可以提供索引的好处,而无需独立实现等效的东西?
sql bigdata in-memory-database apache-spark apache-spark-sql
我需要在PyCharm IDE中使用SciPy库(在Mac OSX Lion机器上).SciPy网站写道,Mac用户最简单的安装方法是安装Anaconda(或同等的发行版).我使用了Anaconda安装程序,它在我的主文件夹中创建了一个anaconda目录,在那里我找到了一个lib/python2.7/site-packages
包含所需包的目录.但是,PyCharm并不知道所有这些,并且SciPy导入语句仍未解决.
我的问题是如何让PyCharm与Anaconda合作?
我已经建立了一个简单的Spark-ML应用程序,我有一个独立的变换器管道,可以将列添加到原始数据的数据框中.由于变压器不看彼此的输出,我希望我可以在非线性(DAG)管道中并行运行它们.我可以找到关于此功能的所有内容来自Spark ML-Guide:
只要数据流图形成有向无环图(DAG),就可以创建非线性管道.目前,此图基于每个阶段的输入和输出列名称(通常指定为参数)隐式指定.如果管道形成DAG,则必须按拓扑顺序指定阶段.
我对段落的理解是,如果我为每个转换器设置inputCol(s),outputCol参数并在创建管道时以拓扑顺序指定阶段,那么引擎将使用该信息来构建执行DAG的阶段.一旦输入就绪,DAG就可以运行了.
关于这个的一些问题: