다음을 통해 공유


U-SQL과 Spark 데이터 형식 간의 차이점 이해

중요합니다

Azure Data Lake Analytics는 2024년 2월 29일에 사용 중지되었습니다. 에 대해 더 알고 싶다면 이 공지을 확인하세요.

데이터 분석을 위해 조직은 Azure Synapse Analytics 또는 Microsoft Fabric 사용할 수 있습니다.

Azure Databricks 또는 Azure HDInsight Spark 를 사용하려는 경우, Azure Data Lake Storage Gen1 데이터 를 Azure Data Lake Storage Gen2 로 마이그레이션하는 것이 좋습니다.

파일을 이동하는 것 외에도 Spark에서 액세스할 수 있는 U-SQL 테이블에 저장된 데이터를 만들려고 합니다.

Azure Data Lake Storage Gen1 파일에 저장된 데이터 이동

파일에 저장된 데이터는 다음과 같은 다양한 방법으로 이동할 수 있습니다.

귀하의 빅 데이터 분석 솔루션을 Azure Data Lake Storage Gen1에서 Azure Data Lake Storage Gen2로 업그레이드하는 것을 다룬 문서()를 검토하시기를 권장합니다

U-SQL 테이블에 저장된 데이터 이동

U-SQL 테이블은 Spark에서 인식되지 않습니다. U-SQL 테이블에 데이터가 저장된 경우 테이블 데이터를 추출하고 Spark에서 이해하는 형식으로 저장하는 U-SQL 작업을 실행합니다. 가장 적절한 형식은 Hive 메타스토어의 폴더 레이아웃에 따라 Parquet 파일 집합을 만드는 것입니다.

출력은 기본 제공 Parquet 출력기를 사용하여 U-SQL에서 수행하고 파일 집합과 함께 동적 출력 분할을 사용하여 파티션 폴더를 만들 수 있습니다. 그 어느 때보다 많은 파일을 처리하고 Parquet 사용하여 이러한 Spark 소모성 데이터를 만드는 방법의 예를 제공합니다.

이 변환 후에는 Azure Data Lake Storage Gen1 파일에 저장된 데이터를 이동하는 챕터 에서 설명된 대로데이터를 복사합니다.

제한 사항

  • 데이터 의미 체계 파일을 복사할 때 복사본은 바이트 수준에서 발생합니다. 따라서 동일한 데이터가 Azure Data Lake Storage Gen2 계정에 표시되어야 합니다. 그러나 Spark는 일부 문자를 다르게 해석할 수 있습니다. 예를 들어 CSV 파일의 행 구분 기호에 다른 기본값을 사용할 수 있습니다. 또한(테이블에서) 형식화된 데이터를 복사하는 경우 Parquet 및 Spark는 형식화된 값 중 일부(예: float)에 대해 서로 다른 정밀도 및 배율을 가질 수 있으며 null 값을 다르게 처리할 수 있습니다. 예를 들어 U-SQL에는 null 값에 대한 C# 의미 체계가 있지만 Spark에는 null 값에 대한 세 가지 값 논리가 있습니다.

  • 데이터 조직(분할) U-SQL 테이블은 두 가지 수준 분할을 제공합니다. 외부 수준(PARTITIONED BY)은 값에 따라 지정되며, 주로 폴더 계층을 사용하여 Hive/Spark 분할 체계에 매핑됩니다. null 값이 올바른 폴더에 매핑되었는지 확인해야 합니다. U-SQL의 내부 수준(DISTRIBUTED BY)은 라운드 로빈, 범위, 해시 및 직접 해시의 네 가지 배포 체계를 제공합니다. Hive/Spark 테이블은 U-SQL과 다른 해시 함수를 사용하여 값 분할 또는 해시 분할만 지원합니다. U-SQL 테이블 데이터를 출력하는 경우 Spark의 값 분할에만 매핑할 수 있으며 최종 Spark 쿼리에 따라 데이터 레이아웃을 추가로 조정해야 할 수 있습니다.

다음 단계