[HADOOP] Spark Dataframe의 중복 열
HADOOPSpark Dataframe의 중복 열
중복 열이있는 hadoop 클러스터에 10GB csv 파일이 있습니다. 나는 Spark-Csv 패키지를 사용하여 DataFrame으로 분석한다.
df <- read.df(
sqlContext,
FILE_PATH,
source = "com.databricks.spark.csv",
header = "true",
mode = "DROPMALFORMED"
)
그러나 df에 중복 전자 메일 열이 있으므로이 열을 선택하려면 오류가 발생합니다.
select(df, 'Email')
15/11/19 15:41:58 ERROR RBackendHandler: select on 1422 failed
Error in invokeJava(isStatic = FALSE, objId$id, methodName, ...) :
org.apache.spark.sql.AnalysisException: Reference 'Email' is ambiguous, could be: Email#350, Email#361.;
at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolve(LogicalPlan.scala:278)
...
전자 메일 열의 첫 번째 항목을 유지하고 후자를 삭제하려면 어떻게해야합니까?
해결법
-
==============================
1.가장 좋은 방법은 업스트림 열 이름을 변경하는 것입니다.
가장 좋은 방법은 업스트림 열 이름을 변경하는 것입니다.
그러나 그것은 가능하지 않으므로 몇 가지 옵션이 있습니다.
-
==============================
2.열의 이름을 변경하십시오.
열의 이름을 변경하십시오.
선택 호출 대신 위치별로 선택할 수 있습니다.
colnames(df)[column number of interest] <- 'deleteme'
또는 열을 직접 삭제할 수도 있습니다.
newdf <- df[,-x]
여기서 x는 원하지 않는 열 번호입니다.
최신 정보:
위 코드가 작동하지 않으면 헤더를 false로 설정 한 다음 첫 번째 행을 사용하여 열의 이름을 바꿀 수 있습니다.
df <- read.df( sqlContext, FILE_PATH, source = "com.databricks.spark.csv", header = "FALSE", mode = "DROPMALFORMED" ) #get first row to use as column names mycolnames <- df[1,] #edit the dup column *in situ* mycolnames[x] <- 'IamNotADup' colnames(df) <- df[1,] # drop the first row: df <- df[-1,]
-
==============================
3.toDF를 사용하여 새 데이터 프레임을 만들 수도 있습니다.
toDF를 사용하여 새 데이터 프레임을 만들 수도 있습니다.
pyspark의 경우 : 스파크 데이터 프레임에서 중복 열 선택 또는 제거
from https://stackoverflow.com/questions/33816481/duplicate-columns-in-spark-dataframe by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HIVE에서 날짜 문자열을 UTC에서 특정 시간대로 변환하는 방법은 무엇입니까? (0) | 2019.06.23 |
---|---|
[HADOOP] 아파치 하이브 MSCK REPAIR TABLE 새로운 파티션이 추가되지 않았습니다. (0) | 2019.06.23 |
[HADOOP] Log4j 출력을 HDFS에 씁니다. (0) | 2019.06.23 |
[HADOOP] 어떻게 Spark Scala 쉘 내의 HDFS 위치에있는 모든 csv 파일을 나열 할 수 있습니까? (0) | 2019.06.23 |
[HADOOP] Hadoop의 로깅 수준을 WARN으로 설정 (0) | 2019.06.23 |