在 Spark 集群中分发下载
Distributing downloads in Spark cluster
在 Spark 中实现这个的最佳方法是什么:
def read_json(url):
resp = requests.get(url)
resultRDD = sc.parallelize(json.loads(resp.content))
df = jsonRDD.toDF()
hiveContext.createDataFrame(resultRDD, df.schema).registerTempTable("tmp_tbl_1")
hiveContext.sql("INSERT INTO TABLE `sc1`.`tbl_data` SELECT * FROM tmp_tbl_1")
urlsRDD = sc.parallelize(["valid-url1.json","valid-url2.json","valid-url3.json"])
urlsRDD.map(read_json)
如何在集群上分布requests.get(url)
?
如何在 map 函数上使用 SparkContext / HiveContext / xContext
How to use SparkContext / HiveContext / xContext on map function
你不能。无法访问 worker 上的 SparkContext
/ SQLContext
。
How to distribute the requests.get(url) on the cluster?
鉴于您不应该这样做的逻辑。由于 insert 不是幂等的,任何失败都会导致 table 的状态不一致。这是高度精细的任务管理器(如 Celery)或工作流管理器(如 Luigi 或 Airflow)的工作。
在 Spark 中实现这个的最佳方法是什么:
def read_json(url):
resp = requests.get(url)
resultRDD = sc.parallelize(json.loads(resp.content))
df = jsonRDD.toDF()
hiveContext.createDataFrame(resultRDD, df.schema).registerTempTable("tmp_tbl_1")
hiveContext.sql("INSERT INTO TABLE `sc1`.`tbl_data` SELECT * FROM tmp_tbl_1")
urlsRDD = sc.parallelize(["valid-url1.json","valid-url2.json","valid-url3.json"])
urlsRDD.map(read_json)
如何在集群上分布requests.get(url)
?
如何在 map 函数上使用 SparkContext / HiveContext / xContext
How to use SparkContext / HiveContext / xContext on map function
你不能。无法访问 worker 上的 SparkContext
/ SQLContext
。
How to distribute the requests.get(url) on the cluster?
鉴于您不应该这样做的逻辑。由于 insert 不是幂等的,任何失败都会导致 table 的状态不一致。这是高度精细的任务管理器(如 Celery)或工作流管理器(如 Luigi 或 Airflow)的工作。