我正在尝试将 DataFrame(大约 1400 万行)写入本地镶木地板文件,但这样做总是导致内存不足。我有一张大地图val myMap : Map[String,Seq[Double]],并通过 将该地图用于udf非常大的 DataFrame val newDF = df.withColumn("stuff",udfWithMap)。我有 128G 的可用 RAM,在将 DataFrame 持久保存到 DISK_ONLY 并执行后df.show,我仍然剩余大约 100G 的 RAM。然而,当我尝试时df.write.parquet,Spark 需要的内存量猛增,并且内存不足。我也尝试过广播myMap,但这样做似乎对记忆没有任何影响。问题是什么?
这是我的代码示例:
scala> type LookupMapSeq = (String, Seq[Double])
scala> val myMap = sc.objectFile[LookupMapSeq]("file:///data/dir/myMap").collectAsMap()
/* myMap.size is about 150,000 and each Seq[String] is of size 200 */
scala> val combineudf = functions.udf[Seq[Double], Seq[String]] { v1 =>
val wordVec = v1.map(y => myMap.getOrElse(y, Seq.fill(200)(0.0)))
wordVec.foldLeft(Seq.fill(200)(0.0)) { case (acc, …Run Code Online (Sandbox Code Playgroud) 我有一个简单的 Get 请求,我想使用 Python 的 Request 库。
import requests
HEADERS = {'user-agent': ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)'
'AppleWebKit/537.36 (KHTML, like Gecko)'
'Chrome/45.0.2454.101 Safari/537.36'),
'referer': 'http://stats.nba.com/scores/'}
url = 'http://stats.nba.com/stats/playbyplayv2?EndPeriod=10&EndRange=55800&GameID=0021500281&RangeType=2&Season=2016-17&SeasonType=Regular+Season&StartPeriod=1&StartRange=0'
response = requests.get(url, timeout=5, headers=HEADERS)
Run Code Online (Sandbox Code Playgroud)
但是,当我requests.get拨打电话时,出现错误requests.exceptions.ReadTimeout: HTTPConnectionPool(host='stats.nba.com', port=80): Read timed out. (read timeout=5)。但是我可以将该 url 复制/粘贴到我的浏览器中并查看生成的 JSON。为什么请求无法得到结果?
由于ls按字母顺序返回文件,有没有办法以随机顺序返回相同的文件?我试图循环遍历目录中的所有文件,但希望它在单独的运行中有所不同。
for i in *.py # Would like order to be random
do
...
done
Run Code Online (Sandbox Code Playgroud)