stream_in .json文件

时间:2017-08-31 12:58:10

标签: json r

我有一个很大的.json文件,我只想阅读它的一部分。

我尝试了以下解决方案,但它们没有用:

yelp <- stream_in(file("yelp_academic_dataset_review.json"), paigesize = 500)
yelp <- stream_in(file("yelp_academic_dataset_review.json"), nrows = 500)

任何人都知道它是如何运作的?

3 个答案:

答案 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行的y​​elp:

// 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;
    }