Хотите подключиться к smb-серверу с помощью Spark и загрузить файлы с этого сервера в Spark .. Допустим, - PullRequest
0 голосов
/ 06 мая 2020

Скажем: у меня есть место вроде smb: // cluster / something / Я хочу подключиться к этому месту и хочу загрузить файлы из этой папки в Spark.

Есть ли способ, Могу сделать или Spark поддерживает только систему hdfs ??

Ответы [ 2 ]

0 голосов
/ 12 мая 2020

Вы можете выполнить любой код Java, Scala, Python или R в своих приложениях Spark и, следовательно, можете использовать любую из распространенных библиотек SMB, доступных для этих языков.

Например, следующие Фрагмент Python, использующий библиотеку pysmb, также будет работать в Spark:

from smb.SMBConnection import SMBConnection

username = "..."
password = "..."
client_name = "..."
server_name = "..."
server_ip = "..."
share_name = "..."

conn = SMBConnection(username, password, client_name, server_name, use_ntlm_v2 = True)
assert conn.connect(server_ip, 139)

for f in conn.listPath(share_name, "."):
  print(f.filename)

Код будет выполняться непосредственно в драйвере, поэтому вы не можете использовать этот подход для больших объемов данных, но для меньшего files это вполне жизнеспособный вариант. Вы можете сначала прочитать файлы в памяти драйвера, а затем распараллелить их, чтобы их можно было объединить с другими наборами данных.

0 голосов
/ 08 мая 2020
     String user = "username";
     String password = "password";
     String path = "smb://cluster14/g/SNBFIle.xlsx";
     NtlmPasswordAuthentication auth = new 
     NtlmPasswordAuthentication("",user,password);
     SmbFile smbFile = new SmbFile(path, auth);

    InputStream is = smbFile.getInputStream();
File targetFile = new File("test/resources/data/file.xlsx");
FileUtils.copyInputStreamToFile(is, targetFile);
Workbook workbook = WorkbookFactory.create(targetFile);
        for(Sheet sheet : workbook) {
            String sheetName = sheet.getSheetName();
            System.out.println(sheetName);
            Dataset<Row> excelDataSet =
                dataLoaderContext.getSparkSession().read()
                    .format("com.crealytics.spark.excel")
                    .option("dataAddress", sheetName.trim() + "!A1")
                    .option("header", "true")
                    .option("useHeader", "true")
                    .option("treatEmptyValuesAsNulls", "true")
                    .option("addColorColumns", "false")`enter code here`
                    .load("test/resources/data/file.xlsx");
            datasetList.add(excelDataSet);

        }
         datasetList.forEach(dataset -> System.out.println(dataset.count()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...