Для подключения к удалённой файловой системе HDFS из PySpark без использования аутентификации Kerberos вам нужно выполнить несколько шагов. Ниже приведены основные шаги для настройки подключения:
### Шаг 1: Установка PySpark
Если у вас ещё не установлен PySpark, вы можете установить его с помощью `pip`:
```bash
pip install pyspark
```
### Шаг 2: Настройка параметров подключения
Во время создания `SparkSession` необходимо указать параметры для доступа к HDFS. Основные настройки включают адрес HDFS и порт, которые, как правило, выглядят как `hdfs://<hostname>:<port>`.
Если вы используете Cloudera QuickStart VM, то HDFS может быть доступен на локальном хосте. Например:
```python
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder \
.appName("HDFS Example") \
.config("fs.defaultFS", "hdfs://<имя_узла_или_IP>:<порт>") \
.getOrCreate()
```
### Шаг 3: Работа с файлами в HDFS
После создания `SparkSession` вы можете работать с файлами в HDFS, используя методы DataFrame и RDD. Например, чтобы прочитать файл из HDFS:
```python
# Чтение данных из HDFS в DataFrame
df = spark.read.csv("hdfs://<имя_узла_или_IP>:<порт>/path/to/your/file.csv")
# Показать содержимое DataFrame
df.show()
```
### Примечания:
1. **Безопасность:** Убедитесь, что ваша конфигурация HDFS позволяет доступ без аутентификации.
2. **Network Configuration:** Убедитесь, что ваша локальная машина может подключиться к виртуальной машине, где развернут HDFS. Возможно, вам нужно будет настроить правила брандмауэра или убедиться в том, что нужные порты открыты.
3. **Настройки Hadoop:** Иногда вам может понадобиться настроить файл `core-site.xml` и другие конфигурационные файлы Hadoop на вашей локальной машине, чтобы PySpark мог правильно интерпретировать окружение HDFS.
### Пример кода
Вот полный пример на Python, показывающий, как установить соединение и выполнить простую операцию чтения:
```python
from pyspark.sql import SparkSession
# Настройки для Spark
hdfs_host = "<имя_узла_или_IP>"
hdfs_port = "<порт>"
# Создание SparkSession
spark = SparkSession.builder \
.appName("HDFS Example") \
.config("fs.defaultFS", f"hdfs://{hdfs_host}:{hdfs_port}") \
.getOrCreate()
# Чтение CSV файла из HDFS
df = spark.read.csv("hdfs://{hdfs_host}:{hdfs_port}/path/to/your/file.csv")
# Показать данные
df.show()
# Закрыть SparkSession
spark.stop()
```
Таким образом, вы сможете наладить соединение с удаленной файловой системой HDFS с использованием PySpark без аутентификации Kerberos.