使用 Spark 查询存储在 HDFS 中的数据的最佳方式是什么?
What is the best way to query data stored in HDFS using Spark?
我想创建一个 Java 应用程序来使用 Spark 查询 HDFS 中的数据。到目前为止,我已经通过两种方式测试过这样做:
- 对 Thrift 服务器公开的 JDBC 端点进行 SQL 查询(从默认配置开始)
- 使用 spark 数据集 api
我的问题是,作为 hadoop/spark 的新手,这两种方式中哪一种最有效且更容易设置(没有默认配置)?
据我目前的了解,使用Thrift服务器需要配置和维护Thrift和Hive。另一方面,我希望使用数据集 API 会更慢并且有更多限制,将数据保存在内存中。
thrift 服务器确实需要稍微多一些配置,并且需要一个配置单元元存储来保留 table 定义,您可以使用 sql 查询所有内容。归根结底,运行 thrift 服务器查询和使用无类型数据集 api 的查询之间的性能基本相同,从功能上讲,数据集 api 具有更大的灵活性。强类型数据集 api 的性能低于非类型数据集 api,因为代码生成器会吐出错误代码(尤其是 pre-spark 2.2)。
我想创建一个 Java 应用程序来使用 Spark 查询 HDFS 中的数据。到目前为止,我已经通过两种方式测试过这样做: - 对 Thrift 服务器公开的 JDBC 端点进行 SQL 查询(从默认配置开始) - 使用 spark 数据集 api
我的问题是,作为 hadoop/spark 的新手,这两种方式中哪一种最有效且更容易设置(没有默认配置)?
据我目前的了解,使用Thrift服务器需要配置和维护Thrift和Hive。另一方面,我希望使用数据集 API 会更慢并且有更多限制,将数据保存在内存中。
thrift 服务器确实需要稍微多一些配置,并且需要一个配置单元元存储来保留 table 定义,您可以使用 sql 查询所有内容。归根结底,运行 thrift 服务器查询和使用无类型数据集 api 的查询之间的性能基本相同,从功能上讲,数据集 api 具有更大的灵活性。强类型数据集 api 的性能低于非类型数据集 api,因为代码生成器会吐出错误代码(尤其是 pre-spark 2.2)。