python - 如何轻松地将json文件的某些方面加载到rdd
问题描述
我有一个超过一百万行的 json 文件,所以我试图最大限度地减少我必须运行它的次数以将它的一个方面放入 rdd。
现在,我将每一行加载到一个列表中:
with open('in/json-files/sites.json') as f:
for line in f:
data.append(json.loads(line))
然后,我制作另一个列表并将方面导入其中:
for line in range(1,len(data)):
data_companies.append(data[line]['company'])
然后,我将其并行化为一个 rdd,以便我可以对其进行分析。我担心这会占用多少内存,那么有没有更简单快捷的方法来做到这一点?我试过像这样加载 json 文件,但它不起作用:
data.append(json.loads(line['company'))
解决方案
由于您的数据是结构化的(JSON),您可以查看 Spark-SQL
https://spark.apache.org/docs/2.4.0/sql-programming-guide.html
https://spark.apache.org/docs/2.4.0/sql-data-sources-json.html
您可以直接将 JSON 加载到数据框中并查找特定列进行分析
推荐阅读
- binary - 将二进制读取为十进制或 ascii 混淆
- mongodb - Mongodb 成对分组
- python - 如何根据数学符号划分字符串?
- java - 在 Java 中处理超大文件(6Gig 或更大)
- javascript - 如何解决 HTMLUnit 中的“JavaScriptException value = SyntaxError: with statements not allowed in strict mode”
- html - Notepad++ 无法识别媒体查询
- python - cv2.stereoCalibrate() 函数 - TypeError: stereoCalibrate() 缺少必需的参数
- reactjs - React hooks - 防止 useEffect 更新太快
- java - javax.net.ssl.SSLHandshakeException:没有主题替代 DNS 名称匹配
成立 - symfony - Symfony 4 表单复选框,标签中带有 URL