HDFS上的JSON到CSV转换

HDFS上的JSON到CSV转换,json,csv,hadoop,hdfs,Json,Csv,Hadoop,Hdfs,我正在尝试将JSON文件转换为CSV 我有一个JAVA代码,它能够在UNIX文件系统和本地文件系统上完美地完成这项工作。 我已经写了下面的主类来在HDFS上执行这个转换 public class ClassMain { public static void main(String[] args) throws IOException { String uri = args[1]; String uri1 = args[2]; Conf

我正在尝试将JSON文件转换为CSV

我有一个JAVA代码,它能够在UNIX文件系统和本地文件系统上完美地完成这项工作。 我已经写了下面的主类来在HDFS上执行这个转换

public class ClassMain {

    public static void main(String[] args) throws IOException {


        String uri = args[1];
        String uri1 = args[2];
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(URI.create(uri), conf);
        FSDataInputStream in = null;
        FSDataOutputStream out = fs.create(new Path(uri1));
        try{

            in = fs.open(new Path(uri));

            JsonToCSV toCSV = new JsonToCSV(uri);
            toCSV.json2Sheet().write2csv(uri1);
            IOUtils.copyBytes(in, out, 4096, false);

            }
        finally{
            IOUtils.closeStream(in);
            IOUtils.closeStream(out);
        }
    }

}
json2sheet和write2csv是执行转换和写入操作的方法

我正在使用以下命令运行此jar:

hadoop jar json-csv-hdfs.jar com.nishant.ClassMain /nishant/large.json /nishant/output
问题是,它不会在/nishant/output处写入任何内容。它创建一个大小为0的/nishant/输出文件

在这里使用
copyBytes
可能不是一个好主意

如果HDFS在unix FS和本地FS上运行正常,如何在HDFS上实现这一点


在这里,我尝试将JSON文件转换为CSV,而不是尝试将JSON对象映射到它们的值。文件系统只需要一个配置键就可以成功连接到HDFS

conf.set(key, "hdfs://host:port");  // where key="fs.default.name"|"fs.defaultFS"

不,这不是类似的问题。这里我尝试将JSON文件转换为CSV。在您提到的链接中,它试图将JSON对象映射到它们的值。为什么不为这种情况创建SQL实用程序,如Spark SQL、Hive?