【发布时间】:2018-11-29 04:39:18
【问题描述】:
我很高兴 Spark 允许我与数据库表建立 JDBC 连接,然后在其上构建转换,直到触发评估。我想用 REST API 连接做同样的事情。从理论上讲,这将提供一种在逻辑视图中集成数据库和 API 信息的方法。是否可以将 Spark 数据帧绑定到自定义函数,该函数使用延迟评估生成的参数调用 API?
这里有一些可玩的 pySpark 代码:
import findspark, json, requests
findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("basic test") \
.getOrCreate()
url = 'http://worldclockapi.com/api/json/utc/now'
headers = {"accept": "application/json;charset=UTF-8"}
results = requests.get(url, headers=headers)
obj = json.loads(results.text)
mydict = {k:v for k,v in obj.items() if v is not None}
df = spark.createDataFrame([mydict])
df.show()
在这个例子中,API 调用不是惰性的,也不是由 show() 触发的。
我知道这很容易通过 pySpark API 实现。可以在 Scala 中完成吗?是否有可以在 Spark 中执行此操作的软件包?
可能与In Apache Spark, how to make an RDD/DataFrame operation lazy?相关
【问题讨论】:
标签: apache-spark apache-spark-sql pyspark-sql