복붙노트

[HADOOP] 코드 블록에 대한 magic.wand 기능 사용

HADOOP

코드 블록에 대한 magic.wand 기능 사용

나는 나의 존재하지 않는 코드가 dplyr 작성 유지하면서 plyrmr 패키지를 사용하려면, 따라서 나는 "magic.wand"기능을 사용하려고합니다. 나는 단순함의 "mtcars"데이터 세트와 HDFS (하둡 분산 파일 시스템)에 그것의 경로가 "/ 사용자 / sgerony / mtcars2"를 사용하고 있습니다.

코드 블록은 기본 기능뿐만 아니라 dplyr 기능을 포함하고 있으며,이 내 코드입니다 :

magic.wand(rename,TRUE)
filename <- "/user/sgerony/mtcars"
complex.function = function(x){
  x$carb <- x[,ncol(x)]*2 
  x$carb <- x$carb+2
  x <- as.data.frame(rename(x, lol=carb))
  return(x)
}
magic.wand(complex.function)
# does NOT work
input(filename) %|% complex.function()

결과 (참고 : 행 이름이 사라졌다)

    mpg cyl  disp  hp drat    wt  qsec vs am gear lol
1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4  10
2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4  10
3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4   4
4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3   4
5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3   6
6  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3   4
7  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3  10
8  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4   6
9  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4   6
10 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4  10
11 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4  10
12 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3   8
13 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3   8
14 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3   8
15 10.4   8 472.0 205 2.93 5.250 17.98  0  0    3  10
16 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3  10
17 14.7   8 440.0 230 3.23 5.345 17.42  0  0    3  10
18 32.4   4  78.7  66 4.08 2.200 19.47  1  1    4   4
19 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4   6
20 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4   4
21 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3   4
22 15.5   8 318.0 150 2.76 3.520 16.87  0  0    3   6
23 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3   6
24 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3  10
25 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3   6
26 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4   4
27 26.0   4 120.3  91 4.43 2.140 16.70  0  1    5   6
28 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5   6
29 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5  10
30 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5  14
31 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5  18
32 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4   6

질문 1 :이 옳은 방법이 있나요? 의미는 I이 (가) dplyr 기능을위한 magic.wand 다음 코드의 블록에 대해 처음으로 전화를해야합니까?

질문 2 : 왜이 ​​같은 magic.wand 함수를 호출 할 수없는 이유는 무엇입니까?

magic.wand(dplyr::rename,TRUE)

결과:

> magic.wand(dplyr::rename,TRUE)
Error in match.fun(paste0(f.name, "_")) : 
  'paste0(c("::", "dplyr", "rename"), "_")' is not a function, character or symbol

세부 사항 : 그것은 이름 "::", ". :: data.frame", ". :: 기본", "plyr", "이름 바꾸기"기능을 생성

우리가 여러 라이브러리에 포함 된 기능을 사용하고 있지 않은지 확인하는 것이 필요하지 않다?

질문 3 : 왜 내가 처음 magic.wand 호출의 두 번째 인수가 아니라 마지막으로 "TRUE"넣어해야합니까?

filename<-"/user/sgerony/mtcars"
magic.wand(rename,TRUE)
filename <- "/user/sgerony/mtcars"
complex.function = function(x){
  x$carb <- x[,ncol(x)]*2 
  x$carb <- x$carb+2
  x <- as.data.frame(rename(x, lol=carb))
  return(x)
}
magic.wand(complex.function,TRUE)

오류:

Error in get(as.character(FUN), mode = "function", envir = envir) : 
object 'complex.function_' of mode 'function' was not found

질문 4 : 어떤 코드 내 블록이 dplyr 배관 연산자를 사용하는 경우? 즉:

complex.function = function(x){
      x$carb <- x[,ncol(x)]*2 
      x$carb <- x$carb+2
      x <- as.data.frame(x %>% rename(lol=carb))
      return(x)
    }

난 그냥 plyrmr 배관 운영자에 의해 "%> %"를 대체해야 하는가? 즉 "% | %"?

질문 5 : 나는 "GROUP_BY"와 같은 plyrmr 기능에 해당합니다 dplyr 기능에 magic.wand 함수를 호출해야 하는가?

질문 6 : as.POSIXct를 사용할 때 왜 오류가 있습니까?

magic.wand(mutate,TRUE)
filename <- "/user/sgerony/mtcars"
complex.function = function(x){
  x$carb <- x[,ncol(x)]*2 
  x$carb <- x$carb+2
  x <- as.data.frame(mutate(x,date.time=as.POSIXct("2014-01-01 03:15")))
  return(x)
}
magic.wand(complex.function)

#Works
mtcars %|% complex.function()
# does NOT work
input(filename) %|% complex.function()

나는이 도우려고 주셔서 감사합니다, 그래서 큰 문제입니다 실현

해결법

  1. ==============================

    1.나를 한번 시도해 보자

    나를 한번 시도해 보자

    complex.function = function(x){
      x$carb <- x[,ncol(x)]*2 
      x$carb <- x$carb+2
      rename(x, lol=carb)}
    magic.wand(complex.function)
    input(mtcars) %|% complex.function
    

    참고 : 하나의 magic.wand에 필요한 호출 (다른 하나는 상처를 안하지만, 중복) 및 complex.function에서 제거 일부 CRUD를. 나를 위해 작동합니다.

  2. from https://stackoverflow.com/questions/33736415/using-the-magic-wand-function-for-a-block-of-code by cc-by-sa and MIT license