hdfs - 使用来自 HDFS NFS 挂载的 mssql-tools bcp
问题描述
尝试bcp
从包中运行(使用 centos7)从通过NFS Gatewaymssql-tools
挂载到本地 FS 的 HDFS 位置导出 tsv 文件数据,但遇到类似...的错误
SQLState = S1000,NativeError = 0
错误 = [Microsoft][ODBC Driver 17 for SQL Server]无法打开 BCP 错误文件
或者
SQLState = S1000,NativeError = 0
错误 = [Microsoft][ODBC Driver 17 for SQL Server]无法打开 BCP 主机数据文件
正在运行的 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:未知选项
用法:/opt/mssql-tools/bin/bcp {dbtable | 查询} {在 | 出| 查询 | 格式}数据文件...
所以也不确定那是什么。我的/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 帖子,我将文件下载 ( hadoop fs -get ...
) 到本地临时目录/home/user/tmp/<some uuid>/
,然后在那里做需要做的事情hadoop fs -put ...
。
推荐阅读
- mysql - Rails 4:两个 has_many 模型的模型关系和索引
- python - 为什么 python 显示 datetime(2018,01,01,10,08,00) 的无效令牌?
- c - 就 CPU 时间而言,等待互斥体与等待信号量
- codeigniter - 错误“警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,布尔值在 C:\xampp\htdocs\biservis\profil.php 第 199 行给出”
- python - 仅当查询中的列表计数大于 0 时才应用过滤器
- amazon-web-services - 使用 SQS、SNS 和 APIGW 进行无服务器或 SAM 和本地开发
- sql - 错误:select * from table where column like '%tom's'
- api - 不立即响应 GET 请求,它会在代码完成时响应
- angular - 如何以角度隐藏离子标签
- r - 数据表移位按组错误