SQL 서버에서 SQOOP 증분 업데이트를 사용하여 HBase 테이블로 테이블을로드 중입니다. 그러나 SQL 테이블의 null 값은 HBase로 가져올 수 없습니다. 나는 Hbase가 null 값을 지원하지 않으며 null을 포함하는 필드가 Hbase에 존재하지 않는다는 것을 이해합니다. 하지만 내 관심사는 특정 레코드가 필드에 값이있는 경우에도 대부분의 레코드에 대해 특정 열에 null 값이있는 경우입니다. 는 SQL 테이블 구조 위의 표에서SQOOP - 가져 오기 실패 : Null 문자열에서 경로를 만들 수 없습니다.
CREATE TABLE [dbo].[user_test](
[user_id] [nvarchar](20) NOT NULL,
[user_name] [nvarchar](100) NULL,
[password] [varchar](128) NULL,
[created_date] [datetime2](7) NULL,
[modified_date] [datetime2](7) NULL,
[last_login_date] [datetime2](7) NULL,
[email_id] [nvarchar](100) NULL,
[security_question_id] [int] NULL,
[answered_count] [int] NULL,
[skip_count] [int] NULL,
[role_id] [smallint] NULL,
[use_yn] [char](1) NULL,
[first_login] [char](1) NULL,
[score] [int] NULL,
[secret_answer] [nvarchar](100) NULL,
PRIMARY KEY CLUSTERED
(
[user_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
되어 다음, EMAIL_ID의 값은 대부분의 레코드에 null입니다. 그러나 email_id 값이있는 레코드의 경우에도 Hbase 테이블로 가져 오지 않습니다. sqoop 명령은 SQL에 추가 된 레코드를 가져 오는 데 성공했습니다. SQOOP 명령은 다음과 같습니다.
sqoop import
--connect "jdbc:sqlserver://107.108.32.198:1433;database=ETL_interim_DB;"
--username "hadoop" --password "Semco123"
--query "SELECT CAST(user_id AS Integer) as
user_id,user_name,password,modified_date,last_login_date,email_id,security_question_id,answered_count,skip_count,role_id,use_yn,first_login,score,secret_answer from
ETL_interim_DB.dbo.user_test WHERE \$CONDITIONS"
--hbase-table test2
--column-family cf
--hbase-row-key user_id
--split-by user_id -m 1
--incremental append
--check-column user_id
--last-value 10
다음 오류가 표시되었습니다.
Note: Recompile with -Xlint:deprecation for details.
0 [main] ERROR org.apache.sqoop.tool.ImportTool - Imported Failed: Can
not create a Path from a null string
사람이 HBase를 테이블로 가져 오는 동안 excatly 발생하는 SQL에서 HBase를로와 널 (null) 값의 경우 SQL 서버에 존재하는 모든 값을 가져 오는 방법을 제안시겠습니까?
sqoop 가져 오기에서 가져 오기 제어 옵션 --null-string 및 --null-non-string을 사용하여 시도 했습니까? – Subash
@SubashKonar : 예 --null-string 'nvl'\ --null-non-string '0'과 같은 가져 오기 제어 옵션을 사용해 보았습니다. \ 아무 것도 효과가 없었습니다. Null-string과 Null-non-string의 잘못된 사용법을 제안 해주십시오. – Annapurna
@SubashKonar : SQL에서 HBase로 테이블을 가져 오는 동안 이러한 가져 오기 제어 옵션 (null-string 및 null-non-string) 응용 프로그램이 있습니까? 문서를 살펴볼 때 Hive에 테이블을 가져 오기위한 옵션 만 제공했습니다. – Annapurna