现在我是 Spark sql 的初学者(在 scala lang 中)。我想运行查询。使用 parquet 文件真的能提高性能吗? Parquet 文件或从数据库(Oracle)读取数据是否需要放置在 HDFS 中以执行 Spark 查询?哪一种是正确的方法?
最佳答案
我可以肯定地说,与通过 JDBC 连接器读取 Oracle 等 RDBMS 相比,从 HDFS 读取 parquet 文件更具可扩展性。原因是数据局部性 - 如果您在 HDFS 数据节点所在的同一主机上运行 Spark 执行器,并且可以有效地将数据读入内存,而无需网络开销。 请参阅https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-data-locality.html 和 How does Apache Spark know about HDFS data nodes? 了解更多详情。
此外,Parquet 格式是列式的,与传统 RDBMS 作为 OLAP 存储相比具有优势(尤其是在数据稀疏时)。简短比较:https://www.wikiwand.com/en/Column-oriented_DBMS#/Benefits
关于scala - 我应该在 Spark sql 中使用哪一个来获得更好的性能,是从 Parquet 文件读取数据还是从数据库读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36786604/