Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将csv转换为本机hadoop格式_R_Csv_Hadoop_Hdfs_Hue - Fatal编程技术网

R 将csv转换为本机hadoop格式

R 将csv转换为本机hadoop格式,r,csv,hadoop,hdfs,hue,R,Csv,Hadoop,Hdfs,Hue,如何将csv文件转换为本机hadoop格式,以便与plyrmr包一起使用 这个问题与我的另一个帖子有关: 我有csv格式的mtcars,但当我用以下代码阅读时,它不起作用: filename3 <- "/user/sgerony/mtcars.csv" #file uploaded manually on to the HDFS input(filename3) ## DOES NOT WORK 结果: V1 V2 V3 V4 V5

如何将csv文件转换为本机hadoop格式,以便与plyrmr包一起使用

这个问题与我的另一个帖子有关:

我有csv格式的mtcars,但当我用以下代码阅读时,它不起作用:

filename3 <- "/user/sgerony/mtcars.csv" #file uploaded manually on to the HDFS
input(filename3) ## DOES NOT WORK
结果:

                    V1   V2  V3    V4  V5   V6    V7    V8 V9 V10  V11  V12
1    Chrysler Imperial 14.7   8   440 230 3.23 5.345 17.42  0   0    3    4
2             Fiat 128 32.4   4  78.7  66 4.08   2.2 19.47  1   1    4    1
3          Honda Civic 30.4   4  75.7  52 4.93 1.615 18.52  1   1    4    2
4       Toyota Corolla 33.9   4  71.1  65 4.22 1.835  19.9  1   1    4    1
    mpg cyl  disp  hp drat    wt  qsec vs am gear carb carb.per.cyl
1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4    0.6666667
2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4    0.6666667
3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    0.2500000
4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    0.1666667
"native"
             V1 V2 V3  V4  V5   V6    V7    V8 V9 V10 V11 V12
1    Datsun 710 22  4 108  93 3.85 2.320 18.61  1   1   4   1
2     Mazda RX4 21  6 160 110 3.90 2.620 16.46  0   1   4   4
3 Mazda RX4 Wag 21  6 160 110 3.90 2.875 17.02  0   1   4   4
          model mpg cyl disp  hp drat    wt  qsec vs am gear carb carb.per.cyl
1    Datsun 710  22   4  108  93 3.85 2.320 18.61  1  1    4    1    0.2500000
2     Mazda RX4  21   6  160 110 3.90 2.620 16.46  0  1    4    4    0.6666667
3 Mazda RX4 Wag  21   6  160 110 3.90 2.875 17.02  0  1    4    4    0.6666667
考虑到github上的plyrmr教程所显示的内容,这已经很奇怪了

因此,我受到了以下代码的启发,这些代码在HDFS中写入MTCAR,并将其读回,以查看列名是否被保留:

output(
      bind.cols(
        input(mtcars),
        carb.per.cyl = carb/cyl),
      path="/user/sgerony/mtcars0.out") 
结果:

                    V1   V2  V3    V4  V5   V6    V7    V8 V9 V10  V11  V12
1    Chrysler Imperial 14.7   8   440 230 3.23 5.345 17.42  0   0    3    4
2             Fiat 128 32.4   4  78.7  66 4.08   2.2 19.47  1   1    4    1
3          Honda Civic 30.4   4  75.7  52 4.93 1.615 18.52  1   1    4    2
4       Toyota Corolla 33.9   4  71.1  65 4.22 1.835  19.9  1   1    4    1
    mpg cyl  disp  hp drat    wt  qsec vs am gear carb carb.per.cyl
1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4    0.6666667
2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4    0.6666667
3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    0.2500000
4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    0.1666667
"native"
             V1 V2 V3  V4  V5   V6    V7    V8 V9 V10 V11 V12
1    Datsun 710 22  4 108  93 3.85 2.320 18.61  1   1   4   1
2     Mazda RX4 21  6 160 110 3.90 2.620 16.46  0   1   4   4
3 Mazda RX4 Wag 21  6 160 110 3.90 2.875 17.02  0   1   4   4
          model mpg cyl disp  hp drat    wt  qsec vs am gear carb carb.per.cyl
1    Datsun 710  22   4  108  93 3.85 2.320 18.61  1  1    4    1    0.2500000
2     Mazda RX4  21   6  160 110 3.90 2.620 16.46  0  1    4    4    0.6666667
3 Mazda RX4 Wag  21   6  160 110 3.90 2.875 17.02  0  1    4    4    0.6666667
然后:

结果:

                    V1   V2  V3    V4  V5   V6    V7    V8 V9 V10  V11  V12
1    Chrysler Imperial 14.7   8   440 230 3.23 5.345 17.42  0   0    3    4
2             Fiat 128 32.4   4  78.7  66 4.08   2.2 19.47  1   1    4    1
3          Honda Civic 30.4   4  75.7  52 4.93 1.615 18.52  1   1    4    2
4       Toyota Corolla 33.9   4  71.1  65 4.22 1.835  19.9  1   1    4    1
    mpg cyl  disp  hp drat    wt  qsec vs am gear carb carb.per.cyl
1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4    0.6666667
2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4    0.6666667
3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    0.2500000
4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    0.1666667
"native"
             V1 V2 V3  V4  V5   V6    V7    V8 V9 V10 V11 V12
1    Datsun 710 22  4 108  93 3.85 2.320 18.61  1   1   4   1
2     Mazda RX4 21  6 160 110 3.90 2.620 16.46  0   1   4   4
3 Mazda RX4 Wag 21  6 160 110 3.90 2.875 17.02  0   1   4   4
          model mpg cyl disp  hp drat    wt  qsec vs am gear carb carb.per.cyl
1    Datsun 710  22   4  108  93 3.85 2.320 18.61  1  1    4    1    0.2500000
2     Mazda RX4  21   6  160 110 3.90 2.620 16.46  0  1    4    4    0.6666667
3 Mazda RX4 Wag  21   6  160 110 3.90 2.875 17.02  0  1    4    4    0.6666667
有什么想法吗?

“启发你”的代码从来没有使用过csv

hexdump /tmp/mtcars0.out | head
0000000 94 00 00 00 00 93 00 00 01 6c 08 00 00 00 02 94
0000010 00 00 00 00 93 00 00 01 11 08 00 00 00 0c 91 00
0000020 00 00 01 06 91 00 00 00 01 06 91 00 00 00 01 06
0000030 91 00 00 00 01 06 91 00 00 00 01 06 91 00 00 00
0000040 01 06 91 00 00 00 01 06 91 00 00 00 01 06 91 00
0000050 00 00 01 06 91 00 00 00 01 06 91 00 00 00 01 06
0000060 91 00 00 00 01 06 92 00 00 00 26 00 00 00 03 07
0000070 00 00 00 05 6e 61 6d 65 73 07 00 00 00 09 72 6f
0000080 77 2e 6e 61 6d 65 73 07 00 00 00 05 63 6c 61 73
0000090 73 08 00 00 00 03 92 00 00 00 6e 00 00 00 0c 07

请尝试
make.input.format(format=“csv”,sep=“,”,col.names=names(mtcars))
由于读取分区文件的方式,不支持csv中的头文件,这意味着您必须删除它们(如果存在)。

由于我真的不明白的原因,我找到了将csv转换为“本机”格式的方法。因此,使用mtcars数据集并将其分成两个csv文件,一个用于名称(mtcars_names.csv),另一个用于数据(mtcars_no_names.csv):

如前所述,列名已消失,但现在如果出于某种原因应用bind.cols函数,我不明白输出是本机格式的:

output(
  bind.cols(
    input("/user/sgerony/mtcars_no_names.csv",
format=make.input.format(format = "csv", sep=",", col.names = filename.names[1,])),
    carb.per.cyl = carb/cyl), 
  "/user/sgerony/mtcars1.out")
input("/user/sgerony/mtcars1.out")
结果:

                    V1   V2  V3    V4  V5   V6    V7    V8 V9 V10  V11  V12
1    Chrysler Imperial 14.7   8   440 230 3.23 5.345 17.42  0   0    3    4
2             Fiat 128 32.4   4  78.7  66 4.08   2.2 19.47  1   1    4    1
3          Honda Civic 30.4   4  75.7  52 4.93 1.615 18.52  1   1    4    2
4       Toyota Corolla 33.9   4  71.1  65 4.22 1.835  19.9  1   1    4    1
    mpg cyl  disp  hp drat    wt  qsec vs am gear carb carb.per.cyl
1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4    0.6666667
2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4    0.6666667
3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    0.2500000
4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    0.1666667
"native"
             V1 V2 V3  V4  V5   V6    V7    V8 V9 V10 V11 V12
1    Datsun 710 22  4 108  93 3.85 2.320 18.61  1   1   4   1
2     Mazda RX4 21  6 160 110 3.90 2.620 16.46  0   1   4   4
3 Mazda RX4 Wag 21  6 160 110 3.90 2.875 17.02  0   1   4   4
          model mpg cyl disp  hp drat    wt  qsec vs am gear carb carb.per.cyl
1    Datsun 710  22   4  108  93 3.85 2.320 18.61  1  1    4    1    0.2500000
2     Mazda RX4  21   6  160 110 3.90 2.620 16.46  0  1    4    4    0.6666667
3 Mazda RX4 Wag  21   6  160 110 3.90 2.875 17.02  0  1    4    4    0.6666667

因此,似乎只要应用plyrmr函数(输入和输出除外),csv格式就会转换为本机格式。知道为什么吗?

我知道,很抱歉,这不是重点。我想知道是否有办法将csv转换为本机格式,这样我就可以保留列名,而不必为了列名管理而大量更改代码。我仍然不知道为什么我不能获得与plyrmr教程相同的输出。是吗?这是我最好的回答对不起。避免csv以保留元数据。