Я очень рад, что 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()
InВ этом примере вызов API не является ленивым и не вызывается функцией show ().
Я понимаю, что это легко может быть невозможно с помощью API pySpark.Можно ли это сделать в Scala?Существует ли программный пакет, позволяющий сделать это в Spark?
Может быть связано с В Apache Spark, как сделать операцию RDD / DataFrame ленивой?