중요합니다
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 Factory 파이프라인을 작성하여 Azure Data Lake Storage Gen1 계정의 데이터를 Azure Data Lake Storage Gen2 계정으로 복사합니다.
- Azure Data Lake Storage Gen1 계정에서 데이터를 읽고 Azure Data Lake Storage Gen2 계정에 쓰는 Spark 작업을 작성합니다. 사용 사례에 따라 원래 파일 형식을 유지할 필요가 없는 경우 Parquet과 같은 다른 형식으로 작성할 수 있습니다.
귀하의 빅 데이터 분석 솔루션을 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 쿼리에 따라 데이터 레이아웃을 추가로 조정해야 할 수 있습니다.