알려진 문제점(제한사항)
다음 제한 사항 및 알려진 문제가 적용됩니다 IBM® watsonx.data.
watsonx.data Lite watsonx.data 플랜에서 API가 빈 응답을 반환함 (sample_data 카탈로그)
다음 watsonx.data API 엔드포인트는 샘플 하이브 카탈로그( IBM COS 버킷)에 대해 빈 응답을 반환합니다:
Unity API
/api/2.1/unity-catalog/schemas/{catalog_name}.{schema_name}/api/2.1/unity-catalog/tables?catalog_name={catalog_name}&schema_name={schema_name}
콘솔 API
/v3/tables/{table_name}?catalog_name={catalog_name}&schema_name={schema_name}/v3/columns?catalog={catalog_name}&schema={schema_name}/v3/schemas/{schema_name}?catalog={catalog_name}/v3/schemas?catalog={catalog_name}
비공개 엔드포인트 사용 시 콘솔에 스파크 애플리케이션이 표시되지 않음
가상 사설 엔드포인트(VPE)를 활성화하여 보안을 강화하면, 사설 엔드포인트에 제출된 Spark 애플리케이션은 watsonx.data 콘솔에서 확인할 수 없습니다. 애플리케이션 목록은 공개 엔드포인트도 활성화된 경우에만 표시됩니다.
해결 방법: VPE 게이트웨이를 사용하여 VPC 내부에서 애플리케이션 목록에 접근할 수 있습니다.
ANALYZE TABLE sample_data 카탈로그 내 테이블에 대한 작업은 지원되지 않습니다
계정 범위 watsonx.data 인스턴스에 대해서는 CPG 수입/수출이 지원되지 않습니다
현재 계정 범위로 설정된 watsonx.data 인스턴스의 경우, 공통 정책 게이트웨이(CPG)의 가져오기/내보내기 기능은 지원되지 않습니다. 이러한 기능을 사용하려는 모든 시도는 실패하며 다음 오류 메시지를 반환합니다:
import/export features will not be supported for this instance: <instanceID>.
Spark는 제공된 구성으로 ANSI 모드에서 4.0 SQL 쿼리를 실행하지 못합니다
ANSI 모드가 활성화된 상태에서 4.0 Spark에서 spark.sql.ansi.enabled=true SQL 쿼리를 실행할 때, ANSI 모드의 엄격한 유형 적용으로 인해 쿼리가 ExtendedAnalysisException 실패합니다. 이 문제는 Spark에서 작동하는 구성을 사용할 3.5 때에도 발생합니다.
해결 방법: 매개변수를 설정하여 비-ANSI 모드를 사용하십시오: "spark.sql.ansi.enabled": "false"
Spark에서 ANSI 모드를 비활성화하여 4.0 TPC-DS 쿼리 실패를 방지하십시오
Spark를 4.0 런타임으로 사용할 때 ANSI 모드는 기본적으로 활성화됩니다. 이는 표준 TPC-DS 쿼리 실행 시 오류를 발생시킵니다. 이러한 문제를 방지하려면 Spark 4.0 템플릿에서 ANSI 모드를 비활성화해야 합니다. 이를 spark.sql.ansi.enabled": "false" 위해 구성 설정을 설정하십시오. 이는 ANSI 모드가 자동으로 활성화되지 않도록 보장하며
쿼리 호환성 문제를 방지합니다.
활성화 Context-based restrictions 시 액세스 실패
이 Context-based restrictions 활성화되면 수집 작업이 실패합니다. 또한 메타스토어 관리자 권한이 필요한 다른 작업들도 실패합니다. CBR이 비활성화된 상태에서는 섭취 및 관리자 수준 작업이 예상대로 작동합니다.
watsonx.data 네트워크 context-based restrictions 정책으로 인해 보조 작업이 실패했습니다
어시스턴트를 watsonx.data 통해 watsonx.data 인스턴스에 대한 정보를 검색하려고 할 때, 계정 수준에서 가 활성화된 Context-based restrictions 경우 인증 오류로 인해 요청이 실패할 수 있습니다. 이 문제는 watsonx.data 어시스턴트가 정책에 Context-based restrictions 정의된 신뢰할 수 있는 IP 주소에 포함되지 않을
때 발생하며, 이로 인해 API 요청이 거부됩니다.
Ranger 서비스 Hadoop 통합 시 및 Presto Spark 쿼리에서 액세스 거부 오류 발생
Ranger Hadoop 서비스를 통합할 때 watsonx.data, 엔진을 Presto 사용하여 실행된 SQL 쿼리는 다음과 같은 오류로 실패합니다: Access denied: USE. 이러한 현상은 쿼리 작업 공간을 통해 기본 카탈로그에 스키마를 생성하는 등의 작업 중에 발생합니다. 또한 Ranger Presto 서비스가 구성되어 있고 쿼리가 Spark 엔진을 사용하여 실행되는 경우에도 동일한 오류로
쿼리가 실패합니다.
커넥터에서 MongoDB WHERE 절을 사용하여 DATE, TIME, TIMESTAMP 및 VARBINARY 열을 필터링하지 못함
에서 MongoDB 커넥터를 Presto 사용할 때, 다음 데이터 유형의 열로 필터링하는 절이 WHERE 포함된 쿼리는 레코드를 반환하지 못합니다:
- 날짜
- 시간
- TIMESTAMP
- VarBinary
이러한 제한 사항은 거버넌스 규칙이 평가를 위해 기본적인 WHERE``ROW FILTER 절에 의존하는 시나리오에 영향을 미칩니다.
Lite 플랜에서는 쿼리 최적화기 메타스토어의 수동 동기화가 지원되지 않습니다
버전에서는 라이트 인스턴스의 경우 수동 동기화와 쿼리 최적화기를watsonx.data 2.3 위한 초기 메타스토어 동기화가 모두 지원되지 않습니다. 초기 동기화가 실패할 경우, 고객 쿼리는 쿼리 최적화기가 아닌 Presto 의 기본 최적화기로 대체됩니다. 자세한 내용은 쿼리 최적화기를 메타스토어와 수동으로 동기화하는 방법을 참조하십시오.
Chat with Document 화면에서 watsonx.data 에 연결하는 동안 오류가 발생했습니다
Chat with Document 화면에서 watsonx.data 에 연결을 설정하려고 할 때(특히 ca-tor 지역에서) 사용자에게 다음 오류가 발생합니다: 오류: A data source of the specified type [null] does not exist.
ACL UI를 비활성화해도 행 필터링이 차단되지 않습니다 Presto
콘솔 UI를 통해 GenAI ACL을 비활성화해도 Presto 에서 행 수준 필터링을 완전히 방지하지는 못합니다. 이는 Presto 에서 GET /acl_storage API 에 ACL 버킷의 존재 여부를 쿼리하여 ACL 상태를 확인하기 때문에 발생합니다. 버킷이 여전히 등록되어 있으면 UI에서 ACL이 꺼져 있어도 필터링이 계속됩니다.
해결 방법: UI를 통해 ACL을 비활성화한 후 watsonx.data 에서 ACL 버킷을 수동으로 삭제합니다.
스키마 필드가 동일한 테이블에 대한 무단 열 액세스
스키마 내의 특정 테이블에 대한 액세스 권한이 사용자에게 부여된 경우, 해당 테이블이 동일한 열 이름을 공유하는 경우 동일한 스키마에 있는 다른 테이블의 열을 예기치 않게 보고 쿼리할 수 있습니다. 이는 사용자에게 다른 테이블에 대한 명시적인 액세스 정책이 없는 경우에도 발생합니다.
EXT_METASTORE_SYNC 카탈로그 이름 불일치로 인해 실패합니다
사용자는 메타데이터에 저장된 카탈로그 이름을 알지 못할 수 있습니다. 따라서 watsonx.data UI에 사용된 카탈로그 이름이 메타데이터 파일에 지정된 이름과 다르면 EXT_METASTORE_SYNC가 실패하여 쿼리 옵티마이저를 사용할 수 없게 됩니다.
해결 방법: 메타데이터 파일과 동일한 이름으로 카탈로그를 생성합니다.
Node 엔진 재시동 중 할당 지연
재시작 단계에서 제한된 노드 가용성으로 인해 엔진이 노드를 할당하지 못합니다. 그 결과 스키마 생성이 상당히 지연됩니다.
Spark 기록 UI의 저장소 세부 정보 페이지가 공백으로 로드됩니다
스파크 기록 UI 내의 저장소 세부 정보 페이지에서 콘텐츠를 렌더링하지 못합니다. 페이지가 로드되는 동안에는 완전히 비어 있는 상태로 유지되므로 사용자는 스토리지 관련 정보를 보거나 관리할 수 없습니다. 이벤트 로그에 자세한 저장소(블록 업데이트) 정보를 캡처하려면 애플리케이션을 제출할 때 spark.eventLog.logBlockUpdates.enabled 구성을 활성화해야 합니다. 자세한 내용은 네이티브 스파크 엔진을 사용하여 스파크 애플리케이션 제출하기 및 스파크 기록 서버에 액세스하기를 참조하세요.
파일 이름에 공백이나 특수 문자가 포함된 경우 Spark 애플리케이션이 실행되지 않습니다
파일 이름에 공백이나 특수 문자가 포함된 Python (.py) 파일을 업로드하는 경우(예: wordcount (1).py), Spark 작업이 실행되지 않습니다. 시스템에서 이러한 파일 이름을 처리하지 못하므로 작업 제출 중에 다음과 같은 오류가 발생합니다.
/opt/ibm/entrypoint/start-spark-job-wrapper.sh: eval: line 293: syntax error near unexpected token (' /opt/ibm/entrypoint/start-spark-job-wrapper.sh: eval: line 293: spark-submit --master spark://spark-master-headless-b778988f-24ff-49c2-aa05-a56f3c204f0b:7077 s3a://sparkqa-donotdelete-pr-7aqi2frntm5vlz/spark_jobs/uploads/8f472c67-23aa-4f94-8ed6-c9f2dbe13e20/application/wordcount (1).py '/opt/ibm/spark/examples/src/main/resources/people.txt''
해결 방법: 이 문제를 방지하려면 업로드하기 전에 Python 애플리케이션 파일의 이름을 변경하여 공백과 특수 문자를 제거해야 합니다. 예를 들어 wordcount (1).py 의 이름을 wordcount_1.py 으로 변경합니다.
IBM watsonx.data 에서 헤더 크기 제한으로 인해 긴 SQL 쿼리에 대해 준비된 문이 실패합니다 Presto
길고 복잡한 SQL 쿼리에 대한 준비된 문은 Flight service 또는 JDBC 클라이언트(예: DBeaver)를 통해 실행할 때 실패할 수 있습니다. 이 오류는 Presto 엔진의 기본 HTTP 헤더 크기 제한을 초과하여 발생하는 내부 서버 오류로 인해 발생합니다. 이 문제는 14KB 크기의 SQL 쿼리로 메트릭 데이터 자산을 보강할 때 Watsonx BI에서 재현할 수 있습니다.
이는 PrestoDB 자체의 제한이 아니라 JDBC PreparedStatement API의 작동 방식에 따른 결과입니다. 클라이언트 또는 BI 도구에서 PreparedStatement, 을 사용하면 SQL 텍스트 및 매개변수 메타데이터가 직렬화되어 HTTP 요청 헤더의 일부로 Presto 코디네이터에게 전송됩니다. 이 동작은 JDBC 드라이버 구현의 표준이며 Presto 의 쿼리 엔진에만 적용되는 것은 아닙니다.
해결 방법: 이 문제를 완화하려면 워크로드에 따라 다음 방법을 고려하세요:
-
헤더 크기 제한 늘리기
더 큰 쿼리를 지원하려면 다음 매개변수를 사용하여 Presto 엔진 구성을 업데이트하세요:
http-server.max-request-header-size=128kBhttp-server.max-response-header-size=128kB이러한 속성은 이미 화이트리스트에 등록되어 있으며 사용자 지정 API를 사용하여 조정할 수 있습니다.
현재 기본값은 일반적인 쿼리 크기를 기준으로 설정되어 있습니다. 그러나 기본적으로 요청 헤더 크기 제한을 늘리면 특정 트레이드 오프가 발생할 수 있습니다. 헤더 크기가 커질수록 각 요청에 더 많은 데이터를 전송할 수 있게 되어 서비스 거부( DoS DoS) 공격의 위험이 증가합니다. 또한 각 HTTP 요청은 더 많은 메모리를 소모하게 되며, 이는 높은 동시성 환경에서 상당한 문제가 될 수 있습니다. 따라서 이러한 값은 사용 환경과 쿼리 패턴에 따라 신중하게 조정해야 합니다.
-
대용량 쿼리에는
PreparedStatement사용하지 마세요BI 도구 또는 워크로드에서 매우 큰 SQL 쿼리를 생성하는 경향이 있는 경우
PreparedStatement을 비활성화하고 대신createStatement을 사용하는 것이 좋습니다. 이렇게 하면 HTTP 헤더를 통해 대용량 SQL 페이로드를 전송하는 것을 피할 수 있으며 확장성이 더 뛰어난 접근 방식이 될 수 있습니다.
Milvus 및 Presto 세부 정보 편집 페이지에 생성 후 초기에 내부 서버 오류가 표시됩니다
엔진을 생성한 직후 Milvus 및 Presto 엔진 세부 정보 페이지에서 설명을 편집하려고 할 때 500 내부 서버 오류가 발생할 수 있습니다. 이 문제는 일반적으로 캐싱으로 인해 시스템에서 정책 전파가 지연되기 때문에 처음 몇 번의 시도 중에 발생합니다.
정책 업데이트 지연
CPG 및 AMS 정책 업데이트는 시스템 전체에 반영하는 데 시간이 조금 더 걸릴 수 있습니다. 이 지연은 새로운 캐싱 방법으로 인한 것으로, 예상되는 동작입니다.
외부 스파크 엔진이 Amazon S3 저장소에 연결하지 못했습니다
외부 Spark 엔진을 사용하여 IAM 역할 기반 인증으로 구성된 amazon_s3 버킷에 저장된 데이터에 액세스할 때, 엔진이 데이터를 연결하거나 검색하지 못합니다.
스파크에서 MOR에서 COW 테이블 변환 실패 4.0
MOR에서 COW 테이블 변환 스파크 애플리케이션은 Spark 4.0 에서 지원되지 않습니다.
해결 방법: Spark 버전 3.4 또는 3.5 을 사용하여 MOR에서 COW 테이블 변환을 수행하세요.
하이브 카탈로그 열 이름 불일치로 인해 Presto (C++) 엔진에서 미리보기 대시보드에 null 값이 표시됩니다
Presto (C++) 엔진으로 인해 Parquet 파일의 열 이름과 Hive 카탈로그 구성이 일치하지 않아 미리보기 대시보드에 특정 테이블의 모든 null 값이 표시되는 문제가 발생합니다.
해결 방법: 다음 세션 속성을 적용합니다:
set session [catalog_name].file_column_names_read_as_lower_case=true;
Manta 애플리케이션이 Spark에서 실행되지 않음 4.0
Manta 애플리케이션(Iceberg, Hudi, Hive, Delta)은 Spark 4.0 에서 제출할 때 실행되지 않습니다.
해결 방법: 사용 가능한 다른 Spark 버전을 사용하여 Manta 애플리케이션을 실행하세요.
FIPS 사용 클러스터에서 화살표 커넥터에 대한 테스트 연결이 실패합니다
화살표 커넥터에 대한 테스트 연결은 암호화 제한으로 인해 FIPS 사용 클러스터에 배포할 때 실패할 수 있습니다. 이는 연결 유효성 검사 중에 FIPS 모드와 호환되지 않는 기본 데이터 소스 또는 라이브러리에 의존하는 Greenplum, MariaDB, 및 Salesforce 와 같은 커넥터에 영향을 줍니다.
Apache Kafka fIPS 사용 클러스터에서 테스트 연결이 실패합니다
Apache Kafka 의 경우 SASL_MECHANISM이 " SCRAM-SHA-512 "로 명시적으로 설정되지 않으면 테스트 연결이 실패할 수 있습니다. 이 메커니즘은 FIPS 요구 사항과 호환되며 FIPS 지원 환경에서 성공적인 연결 테스트를 보장하기 위해 사용해야 합니다.
수집 UI를 통한 스키마 및 테이블 생성에서 지원되지 않는 특수 문자
수집 UI를 통해 스키마 및 테이블을 만들 때 다음과 같은 특수 문자는 지원되지 않습니다:
% 및 + 이러한 제한은 Hive, Delta 및 Hudi와 같은 기본 스토리지 엔진의 제한으로 인해 시행됩니다. 데이터 관리자 페이지에서는 더 광범위한 특수 문자 집합(예: !, @, #, &, _, -, =,
+, ], }, <, >)을 허용할 수 있지만, 수집 흐름에서는 서비스 간 호환성을 보장하기 위해 더 엄격한 유효성 검사를 시행합니다.
만료된 저장소 또는 데이터베이스 자격 증명을 업데이트한 후 일시적으로 쿼리 실행이 실패합니다
Presto 엔진과 연결된 스토리지 또는 데이터베이스 리소스에 대한 만료된 자격 증명을 업데이트한 후 쿼리 작업 영역에서 약 30~40초 동안 쿼리 실행이 실패합니다. 이 지연이 지나면 쿼리가 추가 문제 없이 성공적으로 실행됩니다.
통계 동기화 작업이 실행 중 멈춘 상태입니다
통계 동기화 작업은 알 수 없는 조건으로 인해 실행 중에 멈춰 있을 수 있습니다. 이 경우 사용자는 로그를 확인하여 최적화 프로그램 또는 Db2 에서 작업 상태를 확인할 수 있습니다. 작업 상태가 수신 안 됨, 실행 안 됨 또는 알 수 없음인 경우 사용자가 수동으로 작업을 강제로 삭제해야 합니다.
멈춘 작업이 삭제된 후
- 현재 대기열 목록에 작업이 있는 경우 첫 번째 작업이 자동으로 활성으로 전환되어 실행이 시작됩니다.
- 대기 중인 작업이 없는 경우 사용자는 수동으로 새 작업을 제출할 수 있습니다.
상태 정의:
- 수신되지 않음: 시스템이 지정된 작업 ID에 대한 호출을 받지 못했습니다.
- NOTRUN: 오류로 인해 스케줄러가 작업의 프로시저를 호출하지 못했습니다.
- 알 수 없음: 작업이 실행을 시작했지만 스케줄러가 예기치 않은 조건으로 인해 결과를 기록하지 못했습니다.
호환성 문제: 스파크에서 프레스토로 작성한 빙산 표를 Parquet로 읽지 못함 V2
Presto 이 Parquet V2 작성기를 사용하도록 명시적으로 구성된 경우 Spark가 Presto 에서 아이스버그 테이블에 삽입된 데이터를 읽지 못합니다. 이 문제는 Spark가 특정 Parquet V2 인코딩(예: DELTA_BINARY_PACKED)에 대한 벡터화된 읽기를 지원하지 않기 때문에 발생합니다. 일반적인 오류 메시지는 UnsupportedOperationException: Cannot support vectorized reads for column [CustomerID] optional int32 CustomerID = 1 with encoding DELTA_BINARY_PACKED. Disable vectorized reads to read this table/file at org.apache.iceberg.arrow.vectorized.parquet.VectorizedPageIterator.initDataReader(VectorizedPageIterator.java:98) 입니다.
해결 방법: 이전 버전의 watsonx.data 을 사용하여 만든 테이블을 읽는 동안 이 오류가 발생하는 경우 다음 Spark 구성을 설정하세요.
config("spark.sql.iceberg.vectorization.enabled", "false")
tpcds 또는 tpch 커넥터에 대한 역할 관련 information_schema 테이블 쿼리 제한
사용자가 tpcds 또는 tpch 커넥터에 대한 역할 관련 information_schema 테이블을 쿼리할 때 오류가 발생합니다. tpcds 및 tpch 은 역할 기반 보안 기능을 지원하지 않는 커넥터를 벤치마킹하는 것이므로 이러한 동작은 의도된 것이며 Presto 에서 이러한 커넥터에 대해 예상되는 동작입니다.
해결 방법: 오류를 방지하려면 tpcds 또는 tpch 커넥터에 대한 역할 관련 정보 스키마 테이블(예: 적용 가능한 역할, 활성화된 역할 및 역할)을 쿼리하지 마세요.
유효한 스키마, 테이블 및 열 이름을 사용하여 쿼리 안정성 보장
쿼리 작업 영역에서 테이블을 만들 때 스키마, 테이블 또는 열 이름에 선행 또는 후행 공백을 사용하지 마세요. 생성에는 성공할 수 있지만 이러한 추가 공백으로 인해 쿼리 또는 상호 작용 중에 문제가 발생할 수 있습니다. 원활하고 안정적인 운영을 위해 항상 공백이 없는 깔끔한 이름을 사용하세요.
다음에서 BLOB 및 CLOB 지원의 제한 사항 Presto
Presto 는 BLOB 및 CLOB 열이 있는 테이블을 포함하는 커넥터에서 읽고 쓸 수 있습니다. 그러나 CREATE TABLE 문에서 열 데이터 유형으로 BLOB 또는 CLOB 을 사용하는 것은 지원하지 않습니다.
액세스 제어 정책 적용이 지연되는 경우 Milvus
액세스 제어 정책의 생성과 적용 사이에 지연이 있습니다 Milvus. 이 지연은 정책 동기화에 필요한 시간으로 인해 발생합니다.
SQL 뷰는 여러 엔진에서 쿼리할 수 없습니다(Spark 및 Presto )
Hive iceberg 카탈로그가 있는 엔진에서 만든 SQL 뷰는 다른 엔진에서 인식되지만, 한 엔진이 다른 엔진의 SQL 방언을 이해할 수 없기 때문에 엔진 간에 쿼리할 수 없습니다.
Tiny Presto API 응답에 드라이버 및 리소스 그룹 세부 정보가 누락되었습니다
새로운 아키텍처는 get_presto_engine 호출에서 드라이버 세부 정보를 생략하기 때문에 현재 GET presto_engines API는 Tiny Presto 엔진을 쿼리할 때 드라이버 및 resource_groups에 대해 null을 반환하지만 기존 사용자는 /driver_registration 엔드포인트를 통해 드라이버 정보에 계속 액세스할 수 있습니다.
이름에 특수 문자가 포함된 열에서 데이터를 삭제할 수 없음
WHERE 절 내의 열 이름에는 특수 문자가 지원되지 않으므로 이름에 특수 문자가 포함된 열에서 데이터를 삭제할 수 없습니다.
watsonx.data 어시스턴트를 장시간 사용한 후 오류 발생
watsonx.data 어시스턴트를 장시간 사용하면 다음 오류가 발생합니다.
There is an error with the message you just sent, but feel free to ask me something else.
해결 방법: 브라우저를 새로고침합니다.
기존 등록을 제거한 후 SAL을 다시 등록할 수 없습니다
체험판이 아닌 사용자는 기존 등록을 삭제한 후 SAL을 다시 등록할 수 없습니다.
해결 방법: 다음 단계를 완료하십시오:
-
IAM 액세스 클라우드 계정에 사용자에 대한 액세스 권한을 추가합니다.
-
다음 SAL API를 사용하여 통합을 삭제하십시오.
curl -X 'DELETE' \ 'https://api.dataplatform.cloud.ibm.com/semantic_automation/v1/wxd_integrations/<wxd-instance-id>' \ -H 'accept: */*' \ -H 'Authorization: Bearer <iam_bearer_token>' -
다음 API를 사용하여 연동 상태를 확인하고 연동이 삭제되었는지 확인하세요.
curl -X 'GET' \ 'https://api.dataplatform.cloud.ibm.com/semantic_automation/v1/wxd_integrations/<wxd-instance-id>' \ -H 'accept: */*' \ -H 'Authorization: Bearer <iam_bearer_token>' -
SAL을 다시 등록합니다.
쿼리 작업 영역에서 구체화된 테이블 만들기는 성공했지만 동일한 권한을 사용하는 Spark 노트북에서는 실패합니다
쿼리 작업 영역에서 SQL 쿼리를 사용하여 구체화된 테이블을 만들려고 하면 작업이 성공합니다. 사용자는 버킷에 대한 읽기 권한과 기본 Iceberg 카탈로그에 대한 적절한 액세스 정책(삽입, 업데이트, 선택, 삭제)을 가지고 있습니다. 그러나 watsonx.data 스팍 템플릿을 사용하여 스팍 노트북 내에서 동일한 SQL 문을 실행하면 다음 오류가 발생합니다. the action is not allowed.
해결 방법: Create access control policy 페이지에서 아이스버그 버킷 저장소에 대한 L3 정책을 정의하세요.
QHMM 버킷은 엔진이 실행 중인 상태일 때만 엔진에 연결됩니다
프로비저닝 상태에서 QHMM 카탈로그를 엔진에 연결하면 시스템에서 서비스 가능성 측에 카탈로그가 존재하지 않는다는 오류를 반환합니다. 그러나 엔진이 실행 중일 때는 시스템이 자동으로 QHMM 카탈로그를 연결합니다.
사용자에게 "잘못된 자격 증명으로 인한 테스트 연결 실패 오류" 오류가 발생할 수 있습니다
데이터 소스 자격 증명이 올바른 경우에도 일부 데이터 소스에서 '잘못된 자격 증명으로 인한 연결 테스트 실패 오류' 오류가 발생할 수 있습니다. 이 문제는 유효한 자격 증명에도 불구하고 발생할 수 있으며, 데이터 원본에 대한 연결 테스트가 성공하지 못할 수 있습니다.
해결 방법: 이 실패 오류가 발생하면 IBM 지원팀에 문의하세요.
Iceberg 테이블에 열 NDV 통계가 없으면 쿼리 계획이 최적화되지 않음
현재 구현에서는 Presto ( Java ) 및 Presto (C++) 내의 빙산 테이블의 경우, MDS에서 사용 가능한 경우 NDV(고유 값 수) 열 통계가 사용되지 않습니다. NDV는 최적의 쿼리 계획을 생성하는 데 중요합니다. 이러한 기능이 없으면 성능이 크게 저하될 수 있습니다.
해결 방법: 파티션이 없는 테이블의 경우 SET SESSION <iceberg_catalog>.hive_statistics_merge_strategy='USE_NULLS_FRACTION_AND_NDV'; 을 사용합니다.
이 해결 방법은 분할된 테이블에는 적용되지 않습니다.
가상 사설망 구성 제한
IBM Db2 Warehouse, IBM Netezza, IBM Analytics Engine (Spark) 등의 외부 엔진에는 비공개 엔드포인트가 지원되지 않습니다.
HDFS cPDCTL을 통한 버킷 추가는 지원되지 않습니다
HDFS 버킷 추가는 현재 cpdctl wx-data 플러그인에서 지원되지 않습니다.
IBM watsonx.data Presto Software Hub 5.1.1 이후 버전에서는 IBM watsonx.data 클라우드 인스턴스에 연결할 수 없습니다
IBM watsonx.data Presto 커넥터가 520 Cloudflare 오류로 인해 IBM watsonx.data 인스턴스에 연결하지 못했습니다. 이 문제는 특히 watsonx.data 인스턴스에 많은 수의 정책이 있는 경우 GET /engines API를 여러 번 동시에 호출할 때 발생합니다.
Spark 엔진 홈 버킷의 자격 증명을 수정하면 데이터 및 운영에 차질이 생길 수 있습니다
프로비저닝 프로세스 중에 Spark 엔진의 홈 버킷으로 지정된 스토리지 버킷의 액세스 자격 증명을 업데이트하면 데이터 액세스 문제 및 운영 장애가 발생할 수 있습니다.
메타스토어 관리자 및 메타스토어 뷰어가 스키마 및 테이블 세부 정보를 볼 수 없습니다
쿼리 작업 영역 및 데이터 관리자에서 메타스토어 관리자 및 메타스토어 뷰어 권한이 있는 사용자는 스키마 및 테이블에 대한 보기 정책이 정의되어 있지 않으면 스키마 및 테이블 세부 정보를 볼 수 없습니다.
스키마 진화 시나리오가 Presto (C++)에서 실패합니다
테이블 열을 삭제 및/또는 추가하면 쿼리가 실패할 수 있습니다. 예를 들어, 테이블의 쿼리가 실패하는 아래 문 시퀀스를 참조하세요.
create table ice.s3.tessch.12 (age int, name varchar(25), place varchar(25)
insert into ice.s3.tessch.t12 values (35, 'ken', 'paris')
alter table ice.s3.tessch.t12 drop column age
select * from ice.s3.tessch.t12
alter table ice.s3.tessch.t8 add column place varchar(25)
해결 방법: PARQUET 의 경우 세션에서 다음 명령을 실행합니다:
set session <catalog-name>.parquet_use_column_names=true;
<catalog-name> 을 실제 사용 중인 카탈로그로 바꿉니다.
또는 카탈로그 속성에서 hive.parquet.use-column-names=true 을 설정합니다. ORC 의 경우 카탈로그 속성에서 hive.orc.use-column-names=true 을 설정합니다.
WE8ISO8859P9 문자 집합을 사용하는 Oracle 데이터베이스에서 터키 대문자 İ 문제( ORA-00911 오류)
WE8ISO8859P9 문자 집합을 사용하는 Oracle 데이터베이스에서 터키 대문자 İ는 대/소문자 혼합 기능 플래그 OFF(기본값) 모드에서 지원되지 않으므로 ORA-00911: 잘못된 문자 오류가 발생합니다.
해결 방법: 혼합 대/소문자 기능 플래그를 ON으로 설정합니다.
카탈로그의 기본 보기( information_schema )는 다른 카탈로그의 스키마와 테이블을 나열합니다
사용자가 하나 이상의 카탈로그를 가지고 있는 경우, 엔진과 관련된 카탈로그와 관계없이 기본 information_schema 보기는 다른 카탈로그의 스키마와 표도 표시합니다.
Hive 파일 열 이름 읽기 - 소문자로 설정된 경우, 대문자 전체 너비 글자로 된 외부 열 이름은 인식할 수 없습니다
Presto worker catalog property file-column-names-read-as-lower-case가 true로 설정되면, 필드 이름이 ASCII 대문자에서 ASCII 소문자로 변환됩니다. 결과적으로, 대문자 전각 문자가 있는 열 이름 아래의 데이터는 인식되지 않고 "null"로 표시됩니다.
쓰기/삭제/업데이트 작업 중 ADLS 서명 만료로 작업 실패
Gen1 ADLS 스토리지에서 쓰기/삭제/업데이트 작업을 수행할 때 스파크 작업이 실패하고 다음과 같은 오류가 발생합니다. 이는 ADLS 서명이 프로세스 중간에 만료되기 때문에 발생합니다.
java.io.IOException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature
해결 방법: ADLS 서명 만료 시간을 큰 값으로 설정합니다. ADLS 서명 만료 시간을 제어하려면 속성( spark.hadoop.spark.hadoop.wxd.cas.sas.expiry.period )을 구성하십시오. 기본값을 300s 에서 43200s 로 업데이트하십시오.
Presto CLI 비밀번호 크기 제한
Presto CLI는 최대 1KB(1024바이트)의 비밀번호 크기를 지원합니다. 암호가 이 크기를 초과하면 시스템이 암호 입력란에 암호를 입력할 수 없으므로, 대신 내보내야 합니다.
watsonx.data 웹 콘솔을 업그레이드하는 동안에는 ORC 테이블에 타임스탬츠 데이터 유형이 지원되지 않습니다.
Python 노트북에서 하이픈이나 공백이 포함된 데이터베이스 이름은 적절한 Spark 액세스 제어 확장 기능이 추가되어 있더라도 Spark 엔진에서 쿼리할 수 없습니다.
IBM 에서 의미론적 자동화 레이어 통합을 삭제해도 비즈니스 용어는 그대로 유지됩니다 watsonx.data
IBM Knowledge Catalog 에 비즈니스 용어를 가져와 watsonx.data 의 의미 자동화 레이어(SAL) 통합을 수행한 경우, 통합을 삭제해도 가져온 비즈니스 용어가 삭제되지 않습니다. 이 경우, 새로운 SAL 통합이 이후에 활성화되고 동일하거나 유사한 비즈니스 용어가 다시 업로드될 경우, 중복된 비즈니스 용어가 생성될 수 있습니다.
해결 방법: 중복되는 비즈니스 용어를 피하기 위해, 클러스터 관리자 또는 SAL 등록을 최초로 생성한 사용자는 SAL 통합을 위해 가져온 모든 비즈니스 용어를 수동으로 삭제해야 합니다.
Apache Phoenix 테이블의 EXISTS 절은 쿼리 오류를 실행하는 동안 예외를 생성합니다
Apache Phoenix 테이블의 EXISTS 절을 포함하는 쿼리는 참조된 열이 유효한 경우에도 예기치 않게 실패할 수 있습니다. 이는 EXISTS 절에 대한 Apache Phoenix 의 해석의 한계, 특히 쿼리 구조가 모호하거나 잘못 정렬된 경우에 발생합니다.
해결 방법: 이 제한을 해결하려면 다음 전략 중 하나를 적용하십시오
-
하위 쿼리와 주 쿼리 사이에 명확한 관계를 설정합니다. 서브쿼리 내에 필터 조건을 도입하여 서브쿼리와 메인쿼리 사이에 의미 있는 관계를 만듭니다. 예를 들어, 서브 쿼리에서 department_id_bigint가 NULL이 아닌 경우. 자세한 내용은 다음 예시를 참조하십시오:
SELECT DISTINCT t1.first_name_varchar, t2.performance_rating_real, t1.team_head_varchar FROM phoenix.tm_lh_engine.employee t1, phoenix.tm_lh_engine.departments t2 WHERE EXISTS ( SELECT 1 FROM phoenix.tm_lh_engine.departments WHERE department_id_bigint IS NOT NULL ) -
서브쿼리에서 테이블을 명시적으로 연결함으로써 관련된 테이블들 사이에 명확한 관계를 설정합니다. 이렇게 하면 하위 쿼리가 문맥적으로 적절하게 되고, 실행 문제가 해결됩니다. 예를 들어, 하위 쿼리에서 t3.department_id_bigint = t2.department_id_bigint 인 경우입니다. 자세한 내용은 다음 예시를 참조하십시오:
SELECT DISTINCT t1.first_name_varchar, t2.performance_rating_real, t1.team_head_varchar FROM phoenix.tm_lh_engine.employee t1, phoenix.tm_lh_engine.departments t2 WHERE EXISTS ( SELECT 1 FROM phoenix.tm_lh_engine.departments t3 WHERE t3.department_id_bigint = t2.department_id_bigint )
Hive 카탈로그가 테이블 생성에 대한 CSV 형식을 지원하지 않는 int 유형 열
Hive 카탈로그는 테이블 int 유형 열 생성에 대한 CSV 형식을 지원하지 않습니다. 다음 오류가 표시됩니다.
presto> create table hive_data.hive_schema.intcsv ( type int ) with ( format = 'CSV' ) ;
Query 20241017_021409_00059_fmcyt failed: Hive CSV storage format only supports VARCHAR (unbounded). Unsupported columns: type integer
해결 방법: Hive 카탈로그에 다음 옵션을 사용하세요:
- Varchar로 테이블을 만듭니다.
- 열을 원래 데이터 유형으로 변환하는 뷰를 만듭니다.
일관성 없는 CSV 및 Parquet 파일 수집 동작
설계 사양에는 CSV 파일은 CSV 파일로 생성된 테이블로만 수집하고, 쪽모이 세공 파일은 쪽모이 세공 파일로 생성된 테이블로만 수집해야 한다고 명시되어 있지만, 실제 동작에서는 사용자가 CSV 파일을 쪽모이 세공 테이블로 수집할 수 있는 불일치가 존재합니다. CSV 또는 쪽모이 세공 파일의 스키마 또는 서식이 대상 테이블의 예상 구조와 일치하지 않으면 예상치 못한 결과, 데이터 품질 문제 또는 성능 문제가 발생할 수 있습니다.
UI 및 엔진 재시작 문제를 통해 Presto 리소스 그룹에 잘못된 파일 연결이 발생했습니다
Presto 리소스 그룹에 있는 엔진에 잘못된 파일이 watsonx.data UI를 통해 연결되면 엔진이 다시 시작되는 경험을 하게 됩니다. 그러나 사용자 인터페이스에 엔진이 새로 할당된 파일을 사용하고 있다고 잘못 표시될 수 있습니다.
해결 방법: 새 파일이 watsonx.data 환경과 연결되지 않는 경우, 추가 지원을 위해 IBM 지원팀에 문의하시기 바랍니다.
Hive 및 Iceberg에서 시간 데이터 유형 지원
Hive: Hive 카탈로그는 기본적으로 시간 데이터 유형을 지원하지 않습니다.
Iceberg: Iceberg는 시간 데이터 유형을 지원합니다.
해결 방법: 아이스버그 테이블에서 시간 데이터를 올바르게 처리하려면, " hive.parquet-batch-read-optimization-enabled " 속성을 " false"로 설정해야 합니다.
스키마가 다른 파일은 null 값을 생성합니다
watsonx.data는 이제 다양한 스키마로 지원되는 파일 형식의 수집을 지원합니다. 그러나 이러한 파일 내의 열에 고유한 스키마가 있는 경우 해당 열의 값은 null로 설정됩니다.
스키마, 테이블 및 저장소 위치 생성에서 지원되지 않는 특수 문자
스키마, 테이블 및 저장 위치를 만들 때 다음과 같은 특수 문자는 지원되지 않습니다:
스키마( Hive 와 Iceberg): $, ^, +, ?, *, {, [, (, ), and /.
테이블 ( Hive ): $, ^, +, ?, *, {, [, (, ), /, }, ", '(특수 문자 @ 로 시작하는 스키마 이름 내에 테이블을 만들면 오류가 발생합니다.).
테이블(아이스버그):$, ^, +, ?, *, {, [, (, ), /, @, }, ", '.
저장 위치 $, ^, +, ?, *, {, [, (, }, @, ", '.
표, 열, 스키마 이름에 물음표(?), 하이픈(-), 별표(*) 또는 \r, \n, \t와 같은 구분 기호를 사용하지 않는 것이 좋습니다. 이러한 특수 문자가 지원되고 테이블, 열, 스키마를 생성할 수 있지만, 이를 사용하면 INSERT 명령을 실행하거나 이에 대한 액세스 정책을 적용할 때 문제가 발생할 수 있습니다.
원활한 경험을 위해 아래의 목록을 따르십시오
- 스키마 이름은 문자, 숫자 또는
!,#,&,],},<,>,=,%,@중 하나를 포함할 수 있습니다. - 테이블 이름은 문자, 숫자 또는
!,#,&,],},<,>,=,;중 하나를 포함할 수 있습니다. - 열에는 문자, 숫자,
!,#,&,[,],<>,_,:,@중 하나를 포함할 수 있습니다.
ALTER TABLE 작업이 Spark 작업 제출에서 실패했습니다
스키마, 테이블을 만든 다음 ALTER TABLE 작업을 시도하는 스파크 작업에서 권한 부족으로 인해 authz.AccessControlException 가 발생할 수 있습니다.
스키마 및 테이블 생성에 성공하더라도 메타스토어 데이터가 새로 생성된 스키마 및 테이블 세부 정보로 업데이트되기 전에 작업이 ALTER TABLE 작업을 실행하려고 시도하기 때문에 이러한 문제가 발생합니다.
해결 방법: 액세스 거부 오류를 방지하려면 동일한 Python 스크립트 내에서 새 스키마 또는 테이블을 생성하는 각 작업 사이에 시간 지연을 제공해야 합니다.
해결 방법: DAS를 비활성화하거나 버킷 또는 개체 스토리지가 HTTPS 엔드포인트로 구성되어 있는지 확인할 수 있습니다.
v2 테이블을 Presto(C++)를 통해 읽으려고 시도하면 오류가 발생합니다
데이터 관리자를 통해 watsonx.data에서 생성한 Presto(C++)를 통해 Parquet v2 테이블을 읽으려고 하면 다음 오류가 발생합니다:
Error in ZlibDecompressionStream::Next
해결 방법: Presto (C++)는 현재 Parquet v2 테이블 읽기를 지원하지 않습니다. v1 형식의 새 테이블에 데이터를 복사해야 Presto(C++)를 사용하여 읽을 수 있도록 호환할 수 있습니다.
-
세션 속성을 PARQUET_1_0:로 설정합니다
set session <catalog_name>.parquet_writer_version = 'PARQUET_1_0'; -
다음 명령을 실행하여 데이터를 새 테이블에 복사합니다:
create table <catalog name>.<schema name>.<table name> as (select * from <originaltablename>;
Spark 수집은 현재 분할된 테이블 열 이름에 따옴표, 역따옴표 및 괄호와 같은 특수 문자를 지원하지 않습니다.
Presto (C++) 엔진을 사용하여 쿼리 기록 및 모니터링 관리(QHMM) 관련 테이블을 쿼리하려고 할 때 오류가 발생할 수 있습니다
Presto (C++) 엔진을 사용하여 QHMM 관련 테이블을 쿼리하려고 할 때, 지원되지 않는 파일 형식으로 인해 오류가 발생할 수 있습니다. Presto (C++)는 Parquet v1 형식만 지원합니다. 다른 형식의 데이터 또는 테이블을 쿼리하는 데는 Presto(C++)를 사용할 수 없습니다.
해결 방법: QHMM 관련 테이블을 쿼리할 때 Presto (Java) 엔진을 사용하도록 전환할 수 있습니다.
비행 서버에서 서버 동시 접속자 수 제한에 도달했습니다
항공편 서버를 사용하여 쿼리를 실행할 때 서버 동시성 제한에 도달했습니다 오류가 발생할 수 있습니다. 이는 많은 수의 동시 요청으로 인해 서버의 메모리 사용량이 많을 때 발생합니다.
해결 방법: 플라이트 포드 수를 늘리거나 쿼리를 단순화하도록 재구성하여 하위 쿼리 수를 줄이세요. 시스템 부하 및 사용 가능한 리소스에 따라 복제본 수를 조정합니다.
다음 명령을 사용하여 wdp-connect-flight 배포를 위한 파드 수를 확장합니다:
oc scale deployment wdp-connect-flight --replicas=<number of replicas>
예를 들어, 포드 수를 36개로 확장해야 하는 경우 다음 명령을 실행합니다:
oc scale deployment wdp-connect-flight --replicas=36
Presto에서 그레고리력 날짜 인식이 잘못됨(Hive 쪽모이 세공 마루 테이블 포함)
Presto는 0200-01-01 이전의 과거 날짜를 처리할 때, 특히 Parquet로 형식이 지정된 Hive 테이블에 저장된 경우 문제를 나타냅니다. 이 문제는 1582-10-15 에서 구현된 그레고리력과 율리우스력 간의 변환으로 인해 발생합니다. 이 마감일 이전의 날짜는 Presto에서 잘못 해석한 것입니다.
SHOW COLUMNS 출력의 열 길이에 대한 불완전한 정보
Presto의 SHOW COLUMNS 쿼리는 현재 이름, 데이터 유형, 추가 세부 정보(추가) 및 댓글을 포함한 열에 대한 정보를 제공합니다. 이 문제는 기존 기능에 문자 기반 데이터 유형(CHAR 및 VARCHAR)의 길이에 대한 세부 정보가 부족하다는 점을 강조합니다. 일부 커넥터는 테이블 생성 중에 정의된 실제 길이를 반환하지만, 다른 커넥터는 기본값을 제공하거나 전혀 정보를 제공하지 않을 수도 있습니다.
이 제한을 해결하기 위해 SHOW COLUMNS 출력에 세 개의 새로운 열이 추가되었습니다:
-
스케일: 소수점 이하 자릿수를 나타내는 DECIMAL 데이터 유형에 적용 가능합니다.
-
정밀도: 숫자 데이터 유형에 적용되며, 총 자릿수를 지정합니다. (기본값: 10)
-
길이: 길이: 허용되는 최대 문자 수를 나타내는 CHAR 및 VARCHAR 데이터 유형에 사용됩니다.
현재 제한 사항:
-
Length열의 보고된 길이가 커넥터 제한으로 인해 테이블 스키마에 정의된 실제 크기를 항상 반영하지 않을 수 있습니다. -
길이 정보를 제공하지 않는 커넥터는 커넥터에 따라 기본값 또는 null을 표시합니다.
쿼리 최적화 도구에서 OPT_SORTHEAP에 대한 계산 오류
OPT_SORTHEAP 값에 대한 쿼리 최적화 도구의 구성 설정에서 계산 오류가 발생하여 쿼리 최적화 도구의 성능이 영향을 받을 수 있습니다.
해결 방법: 쿼리 최적화 프로그램에서 OPT_SORTHEAP 에 대한 계산 오류를 해결하려면 다음 단계를 완료하여 구성을 OPT_SORTHEAP= <initial_value> 에서 OPT_SORTHEAP <initial_value>/20 로 업데이트합니다.
- watsonx.data가 설치된 네임스페이스를 가리키는
PROJECT_CPD_INSTANCE환경 변수를 설정합니다.
export PROJECT_CPD_INSTANCE=<wxd_namespace
- 다음 명령을 실행하여
OPT_SORTHEAP의 값을OPT_SORTHEAP <initial_value>/20로 편집합니다.
oc edit db2uinstance lakehouse-oaas -n $PROJECT_CPD_INSTANCE
STATE주소가Ready주소(lakehouse-oaas)로 변경될 때까지 잠시 기다렸다가 다음 명령을 실행합니다.
watch "oc get db2uinstance -n $PROJECT_CPD_INSTANCE"
제한 사항 -Presto (C++)
- Presto (C++) 엔진은 현재 데이터베이스 카탈로그를 지원하지 않습니다.
- 쪽모이 세공은 지원되는 유일한 파일 형식입니다.
- Hive 커넥터가 지원됩니다.
- 기본 Iceberg 테이블은 Parquet v1 형식의 읽기만 지원합니다.
- TPC-H/TPC-DS 쿼리가 지원됩니다.
DELETE FROM그리고CALL SQL문은 지원되지 않습니다.START,COMMIT, 그리고ROLLBACK거래는 지원되지 않습니다.- 데이터 유형
CHAR,TIME, 그리고TIME WITH TIMEZONE지원되지 않습니다. 이러한 데이터 유형은 다음과 같이 포함됩니다.VARCHAR,TIMESTAMP, 그리고TIMESTAMP WITH TIMEZONE.IPADDRESS,IPPREFIX,UUID,kHYPERLOGLOG,P4HYPERLOGLOG,QDIGEST, 그리고TDIGEST지원되지 않습니다.VARCHAR제한된 길이만 지원합니다.Varchar(n)최대 길이 제한은 지원되지 않습니다.TIME그리고TIME WITH TIMEZONE지역사회 발전에 지원됩니다.TIMESTAMPParquet 파일의 열을 읽을 수 없습니다.
- 스칼라 함수:
IPFunctions,QDigest,HyperLogLog및 지리공간 국제화는 지원되지 않습니다.
- 집계 함수:
QDigest, 분류 측정항목 및 차등 엔트로피는 지원되지 않습니다.
- S3 그리고S3 호환 가능한 파일 시스템(읽기 및 쓰기 모두)이 지원됩니다.
Presto (C++) 외부 파티션을 나눈 테이블을 쿼리하지 못했습니다.
다음을 사용하여 외부 테이블을 쿼리하는 경우 CHAR 데이터 유형 열이 없어 쿼리가 실행되지 않습니다. 이 문제는 다음과 같은 제한으로 인해 발생합니다.Presto (C++)는 지원하지 않습니다 CHAR 데이터 유형.
해결 방법: CHAR 데이터 유형 열을 VARCHAR 데이터 유형으로 변경합니다.
동일한 글루 메타스토어 카탈로그에서 Hive 및 Iceberg 테이블에 액세스
사용할 때AWS Iceberg와 Iceberg가 모두 포함된 버킷이나 스토리지 위치를 관리하기 위한 Glue 데이터 카탈로그Hive 테이블에서 Iceberg 테이블에 액세스하려고 시도합니다.Hive 카탈로그 제공,Not a Hive table 오류가 발생하여 액세스를 시도 중입니다.Hive Iceberg 카탈로그의 테이블은 다음을 제공합니다.Not an Iceberg table 오류.
ID를 열 이름으로 사용CassandraCREATE TABLE
~ 안에Cassandra, 이름이 지정된 열이 있는 테이블을 생성할 수 없습니다.ID 사용하는 동안Cassandra 커넥터를 통해Presto. 이 때문입니다 ID 은(는) 다음에 대해 예약된 키워드입니다.Cassandra 사용하는 드라이버Presto, 각 행에 대한 UUID를 자동으로 생성합니다. 열 이름 ID가 있는 테이블을 생성하려고 하면 다음과 같이 중복 열 선언을 나타내는 오류
메시지가 나타납니다. 중복된 열 id 테이블 선언 tm_lakehouse_engine_ks.testtable12
**해결 방법: ** Cassandra 테이블을 Presto를 통해 만들 때 ID 를 열 이름으로 사용하지 마세요.
CreateCollection L3 정책이 있는 사용자 역할이 Milvus 컬렉션을 만들지 못했습니다
ORM Connection 및 MilvusClient Connection 메서드를 사용하여 Milvus 컬렉션을 만들 때 User role 을 사용하는 사용자는 실패할 수 있습니다.
해결 방법: 지침을 따라야 합니다:
ORM Connection: 사용자는 두 가지 모두를 요구합니다DescribeCollection 그리고CreateCollection 에서 부여된 특권L3 정책 페이지입니다. 권한을 부여하는 동안 데이터베이스의 모든 컬렉션을 선택해야 합니다.DescribeCollection 에서의 특권L3 웹 콘솔을 통한 정책.
MilvusClient Connection: 오직 CreateCollection 특권이 필요하다L3 정책 페이지입니다. 그러나 컬렉션을 만들려는 첫 번째 시도는 실패합니다.
- 실행
create_collection한 번 기능합니다. - 다시 실행
create_collection다시 기능합니다. 이를 통해 정책이 동기화되고 컬렉션 생성이 성공합니다.
데이터 동기화에 영향을 미치는 특수 문자 및 대소문자 혼합
이름에 특수 문자나 대소문자가 혼합된 테이블이나 스키마가 포함된 버킷 간에 데이터를 동기화할 때 다음과 같은 예상치 못한 동작이 발생할 수 있습니다.
- 특정 특수 문자가 포함된 테이블 또는 스키마
%,,,{,),(,@,$,[,:동기화 중에 데이터가 완전히 건너뛰게 됩니다. - 대소문자 또는 대문자가 혼합된 테이블 또는 스키마는 동기화 전에 소문자로 변환됩니다.
임시 해결책: 테이블 및 스키마 이름에 특수 문자 및 대소문자 혼합을 사용하지 마십시오. 지원되는 문자만 사용하도록 기존 테이블 및 스키마의 이름을 바꾸십시오.
Amazon S3 스토리지 엔드포인트에 대한 데이터 유효성 검증 누락
현재 사용자 인터페이스 (UI) 는 Amazon S3 스토리지 유형과 연관된 엔드포인트에 대한 데이터 유효성 검증을 수행하지 않습니다.
WITH 절 및 USE catalog.schema 에서 올바르지 않은 별명 사용
WITH 절: WITH 절 내에서 데이터를 참조할 때 해당 정의 중에 지정된 정확한 별명 이름을 사용하십시오. 올바르지 않은 별명을 사용하면 다음 오류 메시지가 트리거됩니다.
Schema must be specified when session schema is not set
WITH 절과 함께 USE catalog.schema 사용: 테이블이 WITH 및 USE catalog.schema 를 사용하여 지정되는 경우, 올바르지 않은 별명 이름을 사용하는 쿼리로 인해 다음 오류가 발생합니다.
Table does not exist
문자열 리터럴 해석Presto (Java )
- Presto (Java )은 문자열 리터럴을 CHAR로 처리하는 다른 많은 데이터베이스 시스템과 달리 기본적으로 문자열 리터럴을 VARCHAR로 해석합니다.
- 안에Presto (Java ), 문자열 비교는 후행 공백을 제외하고 문자열에 있는 실제 문자에 대해 수행됩니다. 이로 인해 조회가 후미 공백을 포함할 수 있는 문자열에 대해 작업할 때 올바르지 않은 결과를 리턴할 수 있습니다. 이러한 공백은 비교 중에 고려되지 않기 때문입니다.
점이 여러 개인 테이블 이름
Presto (Java )은 이름에 3개 이상의 연속 점이 포함된 테이블 이름 생성 또는 쿼리를 지원하지 않습니다. 쿼리에서 이러한 테이블을 참조하려고 하면 오류가 발생할 수 있습니다.
IAM에서 사용자를 제거한 후에도 엔진의 액세스 제어 페이지에 사용자가 계속 표시됩니다.
LDAP 인증은 Teradata 커넥터에 대해 지원되지 않습니다.
watsonx.data Teradata 커넥터는 현재 사용자 인증을 위해 LDAP (Lightweight Directory Access Protocol) 를 지원하지 않습니다.
임시 해결책: 502오류가 발생하면 1-5초동안 대기한 후 Spark 히스토리 UI 페이지를 다시 로드하십시오. 이는 서버가 작동할 수 있도록 충분한 시간을 허용해야 합니다.
Presto 교차 카탈로그 스키마 생성 이상.
Presto 관리하는 Hive 및 Iceberg 카탈로그의 스키마 생성에 이상이 있습니다. 여러 카탈로그에 공통 Hive 메타스토어 서비스를 사용하는 경우(예: Iceberg 카탈로그와 Hive 카탈로그 또는 두 개의 Iceberg 또는 Hive 카탈로그), 한 카탈로그에서 스키마를 만들면 잘못된 카탈로그에 스키마가 생성될 수 있습니다. 이는 스키마 작성 중에 지정된 위치가 의도한 것과 다른 카탈로그에 속하는 경우에 발생합니다.
해결 방법: Presto CREATE SCHEMA 문을 사용할 때는 항상 대상 카탈로그와 연결된 올바른 저장소 경로를 명시적으로 제공해야 합니다. 그러면 원하는 위치에 스키마가 작성됩니다.
Presto (Java ) 기본 제한을 초과하는 열과 크기가 많은 쿼리입니다.
Presto (Java ) 많은 수의 열(예: 테이블당 열 1000개 이상)이 있는 여러 테이블을 포함하는 쿼리 SELECT 절에서는 모든 배포 환경에서 성능 문제가 발생할 수 있습니다.
max_reorder_joins 가 5이상으로 설정되면 (기본 제한시간은 3분) 반복 최적화 프로그램이 제한시간 초과되고 다음 오류가 발생합니다.
The optimizer exhausted the time limit of 180000 ms
기본값을 초과하는 쿼리의 경우 max-task-update-size 한계 (16MB ~에Presto (Java )), 당신은 TaskUpdate size exceeding this limit 오류(특정한 제한 값은 실제 쿼리에 따라 다름)
임시 해결책:
-
다음 세션 특성을 사용하여
reorder_joins규칙을 임시로 사용 안함으로 설정하여 조회 성능을 개선할 수 있습니다.set session reorder_joins = false; -
증가
max-task-update-size의 가치 config.properties 문제가 다음과 관련된 경우 파일을 제출하세요.TaskUpdate size exceeding the limit오류가 발생하고 다시 시작됩니다.Presto (Java ).
예:
experimental.internal-communication.max-task-update-size=64MB
제한사항: 로그되지 않은 Informix 데이터베이스에서는 트랜잭션이 지원되지 않습니다.
watsonx.data에서 로그되지 않은 Informix 데이터베이스에서 트랜잭션 관련 쿼리를 실행하려고 시도하면 쿼리가 실패합니다. 이는 로그되지 않은 Informix 데이터베이스가 설계적으로 트랜잭션을 지원하지 않기 때문입니다.
제한사항: Netezza Performance Server INSERT문 제한사항.
Netezza Performance Server 는 현재 VALUES절을 사용하여 여러 행을 테이블에 직접 삽입하는 것을 지원하지 않습니다. 이 기능은 단일 행 삽입으로 제한됩니다. INSERT문에 대한 세부사항은 공식 Netezza Performance Server 문서 를 참조하십시오.
다중 행에 대해 VALUES를 사용하는 다음 예는 지원되지 않습니다.
INSERT INTO EMPLOYEE VALUES (3,'Roy',45,'IT','CityB'),(2,'Joe',45,'IT','CityC');
임시 해결책: SELECT및 UNION ALL과 함께 서브쿼리를 사용하여 임시 결과 세트를 구성하고 이를 대상 테이블에 삽입하십시오.
INSERT INTO EMPLOYEE SELECT * FROM(SELECT 4,'Steve',35,'FIN','CityC' UNION ALL SELECT 5,'Paul',37,'OP','CityA') As temp;
문제: Milvus 쿼리에 응답하지 않습니다.
사용 가능한 메모리 용량을 초과하는 컬렉션 또는 파티션을 로드하려고 할 때 Milvus 쿼리에 응답하지 않을 수 있습니다. 이는 Milvus 내의 모든 검색 및 쿼리 작업이 메모리에서 실행되므로 쿼리하기 전에 전체 컬렉션 또는 파티션을 로드해야 하기 때문에 발생합니다.
임시 해결책:
-
Milvus 배포의 메모리 제한을 고려하여 지나치게 큰 컬렉션이나 파티션을 로드하지 마세요.
-
Milvus 쿼리에 응답하지 않는 경우 적절한 Milvus API를 사용하여 일부 컬렉션을 메모리에서 언로드하거나 해제하세요. Python SDK를 사용한 예제입니다:
collection.release()
이슈: Milvus 삭제 후 부정확한 행 수.
collection.num_entities 속성은 삭제 작업 후 Milvus 컬렉션의 실제 행 수를 반영하지 않을 수 있습니다. 이 특성은 예상을 제공하며 삭제된 엔티티를 설명하지 않을 수 있습니다.
정확한 행 수를 얻으려면 콜렉션에서 count(*) 쿼리를 실행하십시오. 이는 삭제 후에도 정확한 개수를 제공합니다.
Pymilvus 구문:
collection = pymilvus.Collection(...)
collection.query(expr='', fields=['count(*)'])
제한사항: 지원되지 않는 Db2 조작입니다.
watsonx.data 는 현재 Db2 컬럼으로 구성된 테이블에 대해 ALTER TABLE DROP COLUMN 조작을 지원하지 않습니다.
기본적으로 Db2 인스턴스는 열 조직 형식으로 테이블을 생성합니다.
watsonx.data 는 Db2에서 행으로 구성된 테이블 작성을 지원하지 않습니다.
제한사항: Elasticsearch에서 널값 처리.
Elasticsearch 커넥터에는 데이터를 로드할 때 널값을 처리하기 위해 필드에 대한 색인 맵핑의 명시적 정의가 필요합니다.
제한사항: Elasticsearch를 사용하여 중첩된 JSON을 로드합니다.
Elasticsearch 커넥터를 사용하려면 사용자가 적절한 로드 및 조회를 위해 중첩된 JSON 구조를 ROW 유형의 배열로 명시적으로 지정해야 합니다. 이러한 구조를 처리하려면 UNNEST 조작을 사용하십시오.
제한: 사용자는 IBM Cloud watsonx.data 단일 인스턴스에 대해 3개의 Milvus 서비스 인스턴스를 생성할 수 있습니다.
문제: Presto 보기를 만들 수 없습니다.
Presto 매핑된 데이터베이스의 뷰를 뷰가 아닌 테이블로 설명합니다. 이는 Presto 엔진에 연결하는 JDBC 프로그램에 분명합니다.
문제: 데이터 액세스 권한 취소 시 카탈로그 액세스 제어에서 사용자가 제거되지 않습니다.
액세스 제어 화면을 사용하여 데이터 제어 정책에 사용자를 추가하여 사용자에게 사용자 액세스 권한을 부여하면 카탈로그에 대해 사용자가 나열됩니다. 액세스 제어 페이지에서 사용자 액세스를 취소하면 사용자는 카탈로그에 대해 나열된 상태로 유지되며 계속 사용자 액세스 권한을 갖습니다.
문제: 예상 카탈로그를 볼 수 없습니다.Presto (Java ).
관리자 권한이 있는 사용자는 예상되는 내용을 볼 수 없습니다.Hive 그리고PostgreSQL 카탈로그Presto (Java ).
문제: 콘솔 UI에 올바르지 않은 사용자가 나열되어 있습니다.
watsonx.data 사용자 (user1 )이 새로운 사용자(user2 )을 사용하여 계정에액세스 및 사용자 관리 화면(관리 > 액세스(IAM) > 액세스 및 사용자 관리 ) 역할에 대한 액세스 권한을 부여합니다(MetastoreAccess, 뷰어, 운영자, 편집자, 관리자). User2 는 user1의 계정을 통해 watsonx.data 인스턴스의 리소스에 대한 액세스 권한을 얻습니다. 또한 user2 는 액세스 제어 화면을 사용하여 데이터 제어 정책에 추가하여 자원 레벨에서 데이터 액세스 권한을 부여받습니다. user1 이 user1의 계정에서 user2 를 제거해도 user2 가 여전히 자원 레벨의 액세스 제어 탭에 나열됩니다.
문제: 작성된 스키마를 볼 수 없습니다.
사용자 역할 및 작성 액세스 권한 (사용자에게는 작성 액세스 권한만 있음) 이 있는 사용자가 외부 데이터베이스에 추가되면 작성한 스키마를 볼 수 없습니다. 사용자가 스키마를 작성할 수 있지만 스키마를 볼 수는 없습니다. 다음은 시스템 응답입니다.
presto:default> show schemas;
Schema
--------
(0 rows)
임시 해결책: 사용자가 작성한 스키마에 대한 선택 권한을 제공하십시오.
문제: 외부 데이터베이스를 조회할 때 액세스가 거부되었습니다.
사용자 역할 및 작성 액세스 권한 (사용자에게는 작성 액세스 권한만 있음) 이 있는 사용자가 외부 데이터베이스에 추가되면 작성한 테이블에서 선택 조회를 실행할 수 없습니다. 사용자가Presto (Java ) 엔진을 사용하고 테이블과 스키마를 생성하면 테이블에서 쿼리할 수 없습니다. 시스템이 Access Denied 메시지를 표시합니다.
Query 20230608_132213_00042_wpmk2 failed: Access Denied: Cannot select from columns [id] in table or view tab_appiduser_01
임시 해결책: 사용자가 작성한 테이블에 대한 선택 권한을 제공하십시오.
문제: 다른 카탈로그 아래에 스키마가 작성되었습니다.
스키마는 Iceberg및 Hive 카탈로그에서 사용 가능합니다. 스키마가 Iceberg 카탈로그 아래에 작성되면 Hive 카탈로그 아래에 나열되고 그 반대의 경우도 마찬가지입니다.
문제:Presto (Java )는 Iceberg 테이블 삭제를 지원하지 않습니다.
Db2에서 DROP SCHEMA를 실행하십시오.
Db2에서 스키마는 비어 있는 경우에만 삭제할 수 있습니다. 비어 있지 않은 스키마에 대해 DROP SCHEMA 문을 시작하면 Db2 SQL 오류 SQLCODE=-478 및 SQLSTATE=42893 가 발생할 수 있습니다.
문제점: Db2에서 부분적으로 지원되는 CREATE VIEW문.
Db2 커넥터는 부분적으로 CREATE VIEW 문을 지원합니다. 그만큼Presto (Java ) 지원되는 SQL 구문에는 사용자 정의 열 이름(테이블 열 이름과 다름)이 있는 뷰 생성이 포함되지 않습니다.
문제: NPSaaS에서 부분적으로 지원되는 CREATE VIEW문입니다.
NPSaaS 커넥터는 CREATE VIEW 문을 부분적으로 지원합니다. 그만큼Presto (Java ) 지원되는 SQL 구문에는 사용자 정의 열 이름(테이블 열 이름과 다름)을 사용하여 뷰 생성이 포함되지 않습니다.
문제:Presto (Java )는 경로를 디렉터리로 인식하지 않습니다.
새로운 테이블을 생성할 때Presto (Java )Hive 사용하는 커넥터S3 외부 위치의 폴더,Presto (Java )는 해당 경로를 디렉터리로 인식하지 못하여 오류가 발생할 수 있습니다.
예를 들어, IBM Cloud UX및 Aspera S3 콘솔을 사용하여 dqmdbcertpq 라는 버킷의 대상 디렉토리 DBCERT/tbint 에 고객 테이블을 작성할 때 다음 오류가 발생합니다. External location must be a directory.
CREATE TABLE "hive-beta"."dbcert"."tbint" (
RNUM int , CBINT bigint
) WITH (
format='PARQUET', external_location = 's3a://dqmdbcertpq/DBCERT/tbint'
);
Query 20230509_113537_00355_cn58z failed: External location must be a directory
파일 시스템의 오브젝트는 오브젝트 및 해당 경로로 저장됩니다. 오브젝트 및 경로에는 연관된 메타데이터가 있어야 합니다. 경로가 메타데이터와 연결되지 않은 경우Presto (Java )은 개체를 인식하지 못하고 경로가 디렉터리가 아니라고 응답합니다.
문제: 권한 부여 또는 권한 취소 권한 지정.
액세스 정책을 통해 사용자에게 권한 부여 또는 권한 취소 권한을 지정하는 것은 다음 시나리오에서 예상대로 작동하지 않습니다.
-
User_A는 버킷 및 Hive 카탈로그 (예:
useracat02) 를 추가합니다. -
User_A는 스키마 및 테이블을 작성합니다.
-
User_B및 User_C에는 카탈로그에 대한 User 역할이 지정됩니다.
-
User_A가 허용 권한 부여 정책을 User_B에 추가합니다.
-
User_B가 카탈로그에 연결하고 User_C에 대해
grant select를 실행합니다.presto:default> grant select on useracat02.schema_test_01.tab_1 to "6ff74bf7-b71b-42f2-88d9-a98fdbaed304"; -
User_C가 카탈로그에 연결하고 테이블에서
select명령을 실행하면 액세스 거부 메시지와 함께 명령이 실패합니다.presto:default> select * from useracat02.schema_test_01.tab_1; Query 20230612_073938_00132_hthnz failed: Access Denied: Cannot select from columns [name, id, salary, age] in table or view tab_1
문제: 위치 없이 스키마를 작성합니다.
위치 없이 스키마를 작성하면 카탈로그의 스키마 목록에 나열되지 않습니다. 예를 들어, 버킷의 위치를 지정하지 않고 스키마를 작성하는 경우 스키마는 버킷이 아닌 HMS에서 작성됩니다. 동일한 이름으로 새 스키마를 작성하려고 하면 실패하고 스키마가 이미 존재한다고 응답합니다.
임시 해결책: 스키마를 작성할 때 버킷의 위치를 지정하십시오.
문제: 스키마 및 버킷의 고유 이름입니다.
스키마 및 버킷은 동일한 이름으로 작성할 수 없습니다. 예를 들어, 한 카탈로그에서 " sales라는 이름의 스키마를 작성하는 경우 다른 카탈로그의 다른 스키마에 동일한 이름을 사용할 수 없습니다. 마찬가지로, 이름이 "salesbucket" 인 버킷을 등록하는 경우, 버킷이 다른 오브젝트 저장소에 있더라도 동일한 버킷을 사용하는 다른 버킷은 등록할 수 없습니다.
임시 해결책: 스키마 및 버킷을 작성할 때 고유한 이름을 사용하십시오.
문제: 대상 테이블에 대한 스키마를 작성하는 중입니다.
스키마가 없는 경우 대상 테이블에 대한 스키마를 작성해야 합니다.
문제: CSV 파일에 잘못된 레코드가 포함된 경우 수집에 실패합니다.
ibm-lh 도구는 불일치 필드가 테이블 정의보다 큰 경우 CSV 파일에 대한 최대 잘못된 레코드 건너뛰기를 지원하지 않습니다.
문제: 경로를 사용하여 스키마 위치를 작성하는 중입니다.
스키마를 작성할 때 다음 위치 옵션 중 하나를 사용하십시오.
- 후행
/가 없는 버킷/하위 경로를 가리키는 위치입니다. - 후행
/가 있는 버킷/하위 경로를 가리키는 위치-더 나은 구조를 위해 권장됩니다.
후미 / 가 있거나 없는 버킷만 가리키는 위치를 사용할 수 있지만 이로 인해 실패할 수 있습니다. 따라서 하위 경로를 사용하는 것이 좋습니다.
문제:Presto (Java ) 지원하지 않습니다 AS OF 빙산 테이블이 있는.
Presto (Java ) 지원하지 않습니다 AS OF <time stamp> SELECT 쿼리의 명령.
임시 해결책: CALL iceberg_data_rollback_to_snapshot 를 호출하여 필요한 시간소인으로 이동하십시오.
시간소인과 함께 CALL iceberg_data_rollback_to_snapshot 를 사용하는 경우, 스토어드 프로시저를 호출하여 이후 시간소인으로 이동할 수 없습니다. Spark SQL을 대안으로 사용하십시오.
문제: 작성자만 Apache Hive (API) 의 테이블에 대해 DROP 액세스 권한을 갖습니다.
테이블 작성자만 Apache Hive 카탈로그에서 작성된 테이블을 삭제할 수 있습니다. 다른 사용자는 테이블에 대한 명시적 DROP 액세스 권한이 있는 경우에도 테이블을 삭제할 수 없습니다. Access Denied 메시지가 표시됩니다.
문제: 사용자 제공 인증서는 watsonx.data에서 지원되지 않습니다.
현재 사용자 제공 인증서는 데이터베이스 연결, 오브젝트 저장소 버킷을 추가하거나 ibm-lh 유틸리티를 사용할 때 watsonx.data 에서 지원되지 않습니다.
문제: 파일 오류에서 구문 분석할 열이 없습니다.
ibm-lh 도구를 사용하여 AWS S3 에서 폴더를 수집하려고 할 때 폴더에 빈 파일이 없는 경우 다음 오류가 발생할 수 있습니다.
No columns to parse from file
임시 해결책: 먼저 aws s3 ls 명령을 사용하여 버킷 내의 폴더를 나열하십시오. 비어 있는 파일이 나열되지 않으면 aws s3 cp 명령을 사용하여 모든 파일을 다른 폴더에 복사하십시오.
대상 테이블 이름의 특수 문자로 인해 수집에 실패할 수 있습니다.
웹 콘솔을 통해 수집할 때 대상 테이블 이름에 특수 문자가 포함된 경우 수집에 실패합니다.
임시 해결책: Spark CLI를 통해 수집을 사용하여 데이터를 수집할 수 있습니다.
한정:Presto (Java )는 지원하지 않습니다 VARBINARY 데이터 형식.
현재 버전의Presto (Java )은 길이가 있는 이진 문자열을 지원하지 않습니다. 데이터베이스에서 ALTER TABLE 문을 실행하면 다음 오류가 발생합니다.
Unknown type 'varbinary(n)' for column 'testcolumn'
이는 Preso의 한계이며, 의 한계가 watsonx.data 아닙니다.
제한: VS Code 개발 환경에서 작업하는 동안 데이터 손실을 방지하기 위해 데이터를 백업하세요 - Spark Labs.
Spark 랩은 본질적으로 임시적이므로 업그레이드 또는 Spark 마스터 충돌 시 발생할 수 있는 데이터 손실을 방지하기 위해 주기적으로 저장된 데이터를 백업해야 합니다.