在不同的操作系统中,文件路径的分隔符是不一样的:
- 在类 Unix(例如 Linux 和 macOS)系统中,文件路径使用正斜杠(
/
)作为目录分隔符。 - 在 Windows 系统中,文件路径使用反斜杠(
\
)作为目录分隔符。
报错:[42000][40000] Error while compiling statement: FAILED: SemanticException Line 1:23 Invalid path ''\home\hadoop\itheima_orders.txt''
SQL 语句 LOAD DATA LOCAL INPATH
是用来导入数据到 Hadoop 或者 Hive 表中。因为 Hadoop 是在类 Unix 系统上开发的,所以在写 Hadoop 文件路径时通常会使用正斜杠(/
),这也是为什么你看到的是 /home/hadoop/itheima_orders.txt
的原因。
在上面报错例子中,\home\hadoop\itheima_orders.txt
是一个错误,特别是如果你在一个基于类 Unix 的系统上运行 Hive。如果在 Windows 上与 Hadoop 交互,有时可能会看到路径使用反斜杠,但是在实际使用中,即使在 Windows 系统上与 Hadoop 进行交互时,建议还是尽可能使用正斜杠(/
),因为 Hadoop 的内部文件系统(HDFS)遵循 Unix 风格的路径。
为了避免混淆,在编写跨平台的代码时,推荐始终使用正斜杠(/
),因为大多数环境(包括 Windows 的大多数现代编程环境)都能正确解析它。