从 HDFS NFS 安装使用 mssql-tools bcp
Using mssql-tools bcp from HDFS NFS mount
尝试 运行 bcp
从 mssql-tools
包(使用 centos7)导出 tsv 文件数据从 通过 [= 安装到本地 FS 的 HDFS 位置18=],但 运行 会遇到类似...
的错误
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 17 for SQL Server]Unable to open BCP error-file
或
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 17 for SQL Server]Unable to open BCP host data-file
bcp 命令 运行 看起来像...
/opt/mssql-tools/bin/bcp "$TABLE" in \
"$filename" \
$TO_SERVER_ODBCDSN \
-U $USER -P $PASSWORD \
-d $DB \
$RECOMMEDED_IMPORT_MODE \
-t "\t" \
-e ${filename}.bcperror.log
# with the actual commmand w/ variables resolved looks like...
/opt/mssql-tools/bin/bcp "ACCOUNT" in \
"/HDFS_NFS/path/to/tsv/1_0_0.tsv" \
-D -S MyMSSQLServer \
-U myuser -P mypassword \
-d SOME_MSSQL_DB \
-c \
-t \t \
-e /HDFS_NFS/path/to/store/errlogs/1_0_0.tsv.bcperror.log
所有这一切对我来说似乎都很好,但也有时 得到像...
这样的错误
/opt/mssql-tools/bin/bcp: unknown option
usage: /opt/mssql-tools/bin/bcp {dbtable | query} {in | out | queryout | format} datafile ...
所以也不确定那是什么。我的 /etc/odbc.ini
文件看起来像...
[MyMSSQLServer]
Driver=ODBC Driver 17 for SQL Server
Description=My MS SQL Server
Trace=No
Server=<the server's IP>
有人知道任何进一步的调试技巧或修复吗?
问题似乎是由 -e
选项指定的错误记录文件 已经存在 在指定的位置并且 HDFS (是否通过 NFS 安装)不喜欢 bcp 命令试图覆盖它。你通常会做类似
hadoop fs -put -f /some/local/file /hdfs/location/for/file
并且我假设 bcp 正在尝试通过 NFS 网关执行其他操作,但不是这个。我想 bcp 访问 HDFS NFS 位置也可能存在延迟问题。 运行 不带 -e
选项的 bcp 命令在最初发布的示例中有效。
** 作为解决方法,基于另一个 SO post,我将文件 (hadoop fs -get ...
) 放到本地临时目录 /home/user/tmp/<some uuid>/
并在那里做需要做的事情, 然后 hadoop fs -put ...
.
尝试 运行 bcp
从 mssql-tools
包(使用 centos7)导出 tsv 文件数据从 通过 [= 安装到本地 FS 的 HDFS 位置18=],但 运行 会遇到类似...
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 17 for SQL Server]Unable to open BCP error-file
或
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 17 for SQL Server]Unable to open BCP host data-file
bcp 命令 运行 看起来像...
/opt/mssql-tools/bin/bcp "$TABLE" in \
"$filename" \
$TO_SERVER_ODBCDSN \
-U $USER -P $PASSWORD \
-d $DB \
$RECOMMEDED_IMPORT_MODE \
-t "\t" \
-e ${filename}.bcperror.log
# with the actual commmand w/ variables resolved looks like...
/opt/mssql-tools/bin/bcp "ACCOUNT" in \
"/HDFS_NFS/path/to/tsv/1_0_0.tsv" \
-D -S MyMSSQLServer \
-U myuser -P mypassword \
-d SOME_MSSQL_DB \
-c \
-t \t \
-e /HDFS_NFS/path/to/store/errlogs/1_0_0.tsv.bcperror.log
所有这一切对我来说似乎都很好,但也有时 得到像...
这样的错误/opt/mssql-tools/bin/bcp: unknown option
usage: /opt/mssql-tools/bin/bcp {dbtable | query} {in | out | queryout | format} datafile ...
所以也不确定那是什么。我的 /etc/odbc.ini
文件看起来像...
[MyMSSQLServer]
Driver=ODBC Driver 17 for SQL Server
Description=My MS SQL Server
Trace=No
Server=<the server's IP>
有人知道任何进一步的调试技巧或修复吗?
问题似乎是由 -e
选项指定的错误记录文件 已经存在 在指定的位置并且 HDFS (是否通过 NFS 安装)不喜欢 bcp 命令试图覆盖它。你通常会做类似
hadoop fs -put -f /some/local/file /hdfs/location/for/file
并且我假设 bcp 正在尝试通过 NFS 网关执行其他操作,但不是这个。我想 bcp 访问 HDFS NFS 位置也可能存在延迟问题。 运行 不带 -e
选项的 bcp 命令在最初发布的示例中有效。
** 作为解决方法,基于另一个 SO post,我将文件 (hadoop fs -get ...
) 放到本地临时目录 /home/user/tmp/<some uuid>/
并在那里做需要做的事情, 然后 hadoop fs -put ...
.