我有一个很大的.json文件,我只想阅读它的一部分。
我尝试了以下解决方案,但它们没有用:
yelp <- stream_in(file("yelp_academic_dataset_review.json"), paigesize = 500)
yelp <- stream_in(file("yelp_academic_dataset_review.json"), nrows = 500)
任何人都知道它是如何运作的?
答案 0 :(得分:1)
首先 - 在您的案例jsonlite
中提供您正在使用的套餐总是有帮助的。
一种解决方案是在流式传输之前解析数据文件(作为.txt文件)。
yelp <- readLines("yelp_academic_dataset_review.json")[1:500]
yelp <- stream_in(textConnection(gsub("\\n", "", yelp)))
我假设您的文件是本地的?
答案 1 :(得分:-2)
过去,我在实际管道/流媒体json方面取得了成功。即,从命令行,
cat x.json | parse_json.py
然后你编写你的python脚本:
import json,sys
for line in sys.stdin:
js_line = json.loads(line.rstrip())
try:
# do something with js_line['x']['y']
except ValueError:
pass
我不确定你为什么要使用stream_in,但这种有点手动的方法可以有效
答案 2 :(得分:-2)
我使用此代码提取1400001到1450000行的yelp:
// Returns IDs that map to Users
public Map<String, User> getUsers() throws SQLException {
Map<String, User> result = new HashMap<>();
String query = "SELECT * FROM User";
try(Connection conn = DriverManager.getConnection(url, properties)){
try (Statement stmt = conn.createStatement()) {
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String id = rs.getString("id_user");
String name = rs.getString("name");
result.put(id, new User(id, name);
}
} catch (SQLException e) {
logger.error(e);
}
}
return result;
}