在Spark群集中分发下载

时间:2017-11-26 17:10:32

标签: apache-spark pyspark spark-dataframe

在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)

如何在地图功能

上使用SparkContext / HiveContext / xContext

1 个答案:

答案 0 :(得分:2)

  

如何在地图功能

上使用SparkContext / HiveContext / xContext

你做不到。无法访问该工作人员的SparkContext / SQLContext

  

如何在群集上分发requests.get(url)?

鉴于逻辑,你不应该。由于insert不是幂等的,因此任何失败都将导致表的状态不一致。这是高度精细的任务管理器(如Celery)或工作流管理器(如Luigi或Airflow)的工作。