Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Artikel ini berisi skenario kesalahan umum dan solusi untuk PolyBase.
Untuk informasi selengkapnya tentang pemantauan dan pemecahan masalah PolyBase, lihat Memantau dan memecahkan masalah PolyBase.
Untuk lokasi file log PolyBase umum di Windows dan Linux, lihat Memantau dan memecahkan masalah PolyBase.
Pesan kesalahan dan kemungkinan solusi
Pembaruan SQL Server 2022 gagal karena nama kolom yang tidak valid (peka huruf besar/kecil)
Kesalahan ini dapat terjadi saat menerapkan penginstalan pembaruan kumulatif SQL Server di server dengan fitur PolyBase diinstal dan menggunakan kolase sensitif huruf besar/kecil, pesan peningkatan kesalahan yang dilaporkan adalah sebagai berikut:
Contoh pesan kesalahan: Error: 912, Severity: 21, State: 2. Script level upgrade for database 'master' failed because upgrade step 'polybase_database_upgrade.sql' encountered error 200, state 7, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
Alasan:
Selama proses peningkatan, skrip SQL Server gagal diselesaikan dengan berhasil karena nilai yang peka terhadap huruf besar/kecil.
Solusi: Masalah ini akan diperbaiki secara permanen dalam pembaruan kumulatif yang akan datang.
Solusi:
- Aktifkan bendera pelacakan 902.
- Mulai SQL Server.
- Ubah kolatasi database 'DWConfiguration' dari CS (peka huruf besar/kecil) menjadi CI (tidak peka huruf besar/kecil).
- Jalankan ulang pemutakhiran.
- Nonaktifkan bendera pelacakan 902.
- Mulai ulang SQL Server.
- Ubah kolasi basis data 'DWConfiguration' kembali dari CI (tidak membedakan huruf besar/kecil) menjadi CS (membedakan huruf besar/kecil).
Sebagai alternatif trace flag, untuk mencegah masalah ini terjadi sebelum pembaruan kumulatif diterapkan, periksa apakah database 'DWConfiguration' menggunakan kolasi peka huruf besar/kecil (CS). Pertimbangkan untuk mengubahnya menjadi kolasi tidak peka terhadap huruf besar/kecil (CI), terapkan pembaruan kumulatif, lalu ubah kembali ke kolasi semula.
Kesalahan: "100001; Gagal membuat rencana kueri"
Kesalahan "Gagal menghasilkan rencana kueri" dapat terjadi ketika mesin database SQL Server telah di-patch ke setidaknya Pembaruan Kumulatif 8 (15.0.4073) tetapi fitur PolyBase belum diperbarui ke build yang sama. Ini dapat terjadi saat menambahkan fitur PolyBase ke instans SQL Server yang ada. Untuk informasi selengkapnya, lihat Kesalahan PolyBase - 100001; Gagal membuat rencana kueri.
Selalu tindak lanjuti penginstalan fitur PolyBase dengan membawa fitur baru ke tingkat versi yang sama. Instal paket layanan (SPs), pembaruan kumulatif (CUs), dan/atau rilis distribusi umum (GDR) sesuai kebutuhan. Untuk menentukan versi PolyBase, lihat Menentukan versi, edisi, dan tingkat pembaruan SQL Server dan komponennya.
Perubahan akun layanan
Contoh pesan kesalahan:
107035; Otorisasi DMs gagal karena [DOMAIN\user] bukan anggota grup [PdwDataMovementAccess]
107017;Header kontrol DMS tidak valid:
Kesalahan ini kemungkinan karena mengubah akun layanan PolyBase. Untuk mengubah akun layanan untuk layanan PolyBase Engine dan PolyBase Data Movement, hapus instalan dan instal ulang fitur PolyBase.
Kesalahan izin layanan pergerakan data
Untuk informasi selengkapnya tentang pemecahan masalah dan cara mengatasi masalah izin pada layanan pemindahan data, lihat Izin Akun Layanan PolyBase dan Kesalahan Umum yang Terjadi Saat Izin Tersebut Tidak Ada.
Kegagalan autentikasi Windows
Untuk informasi selengkapnya tentang pemecahan masalah dan penyelesaian masalah izin yang terkait dengan kegagalan dalam autentikasi Windows, lihat Izin Akun Layanan PolyBase dan Kesalahan Umum yang Diamati Saat Hilang.
Tidak dapat menjalankan kueri "Kueri Jarak Jauh"
Contoh pesan kesalahan:
Msg 7320, Tingkat 16, Status 110, Baris 14
Tidak dapat menjalankan kueri "Remote Query" pada penyedia OLE DB "SQLNCLI11" untuk server tertaut "(null)". Kueri dibatalkan-- ambang penolakan maksimum (0 baris) tercapai saat membaca dari sumber eksternal: 1 baris ditolak dari total 1 baris yang diproses. (/nation/sensors.ldjson.txt) Ordinal kolom: 0, Jenis data yang diharapkan: INT, Nilai yang menyebabkan kesalahan: {"id":"S2740036465E2B","time":"2016-02-26T16:59:02.9300000Z","temp":23.3,"hum":0.77,"wind":17,"press":1032,"loc":[-76.90914996169623,38.8929314364726]} (Kesalahan Konversi Kolom), Kesalahan: Kesalahan mengonversi tipe data NVARCHAR ke INT.
Perlu diingat mungkin ada turunan dari kesalahan ini. Nama file pertama yang ditolak ditampilkan di SQL Server Management Studio (SSMS) dengan jenis atau nilai data yang menyinggung.
Kemungkinan Alasan:
Alasan kesalahan ini terjadi adalah karena setiap file memiliki skema yang berbeda. DDL tabel eksternal PolyBase, ketika diarahkan ke sebuah direktori, akan membaca secara rekursif seluruh file di direktori tersebut. Ketika ketidakcocokan kolom atau jenis data terjadi, kesalahan ini dapat dilihat di SSMS.
Kemungkinan Solusi:
Jika data untuk setiap tabel terdiri dari satu file, gunakan nama file di bagian LOCATION yang diawali oleh direktori file eksternal.
Jika ada beberapa file per tabel, masukkan setiap set file ke direktori yang berbeda di Azure Blob Storage. Arahkan LOCATION ke direktori alih-alih file tertentu. Solusi ini direkomendasikan.
Contoh:
Create External Table foo
(col1 int)WITH (LOCATION='/bar/foobar.txt',DATA_SOURCE...); OR
Create External Table foo
(col1 int) WITH (LOCATION = '/bar/', DATA_SOURCE...);
Catatan
SQL Server Native Client (SNAC) tidak dikirim dengan:
- SQL Server 2022 (16.x) dan versi yang lebih baru
- SQL Server Management Studio 19 dan versi yang lebih baru
SQL Server Native Client (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan aplikasi baru.
Untuk proyek baru, gunakan salah satu driver berikut:
Untuk SQLNCLI yang dikirim sebagai komponen Mesin Database SQL Server (versi 2012 hingga 2019), lihat pengecualian Siklus Hidup Dukungan ini.
Dukungan Kerberos
SQL Server dikonfigurasi untuk mengakses Kluster Hadoop yang didukung. Keamanan Kerberos tidak diberlakukan di Kluster Hadoop.
Memilih dari tabel eksternal mengembalikan kesalahan berikut:
Msg 105019, Level 16, State 1, Line 55
EXTERNAL TABLE akses gagal karena kesalahan internal: 'exception Java terjadi saat memanggil HdfsBridge_Connect: Kesalahan [Tidak dapat membuat instance LoginClass] terjadi saat mengakses file eksternal.'
Msg 7320, Level 16, State 110, Line 55
Tidak dapat menjalankan kueri "Remote Query" pada penyedia OLE DB "SQLNCLI11" untuk server tertaut "(null)". EXTERNAL TABLE akses gagal karena kesalahan internal: 'exception Java terjadi saat memanggil HdfsBridge_Connect: Kesalahan [Tidak dapat membuat instance LoginClass] terjadi saat mengakses file eksternal.'
Pemeriksaan log server DWEngine menunjukkan kesalahan berikut:
[Thread:16432] [EngineInstrumentation:EngineQueryErrorEvent] (Kesalahan, Tinggi):
EXTERNAL TABLE akses gagal karena kesalahan internal: 'Pengecualian Java yang dimunculkan saat pemanggilan HdfsBridge_Connect: Kesalahan [com.microsoft.polybase.client.KerberosSecureLogin] terjadi saat mengakses file eksternal.' Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: EXTERNAL TABLE gagal mengakses karena kesalahan internal: 'Pengecualian Java dilemparkan saat memanggil HdfsBridge_Connect: Kesalahan [com.microsoft.polybase.client.KerberosSecureLogin] terjadi saat mengakses file eksternal.' >--- Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException: Pengecualian Java yang diajukan pada panggilan ke HdfsBridge_Connect: Kesalahan [com.microsoft.polybase.client.KerberosSecureLogin] terjadi saat mengakses file eksternal.
Kemungkinan Alasan:
Kerberos tidak diaktifkan di Kluster Hadoop, tetapi keamanan Kerberos diaktifkan di core-site.xml, yarn-site.xml, atau hdfs-site.xml yang terletak secara default di bawah Program Files\Microsoft SQL Server\MSSQL13. MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf. Di Linux, file secara default terletak di /var/opt/mssql/binn/polybase/hadoop/conf/.
Kemungkinan Solusi:
Komentari informasi keamanan Kerberos dari file yang disebutkan di atas.
Untuk informasi selengkapnya tentang pemecahan masalah PolyBase dan Kerberos, lihat Memecahkan masalah konektivitas PolyBase Kerberos.
Kesalahan prosesor kueri internal
Mengkueri tabel eksternal mengembalikan kesalahan berikut:
Msg 8680, Level 17, State 5, Line 118
Kesalahan Prosesor Kueri Internal: Prosesor kueri mengalami kesalahan tak terduga selama pemrosesan fase kueri jarak jauh.
Log server DWEngine berisi pesan berikut:
[Thread:5216] [ControlNodeMessenger:ErrorEvent] (Kesalahan, Tinggi): ***** Sistem DMS telah memutuskan sambungan simpul :
[Thread:5216] [ControlNodeMessenger:ErrorEvent] (Kesalahan, Tinggi): ***** Sistem DMS telah memutuskan sambungan simpul :
[Thread:5216] [ControlNodeMessenger:ErrorEvent] (Kesalahan, Tinggi): ***** Sistem DMS telah memutuskan sambungan simpul :
Kemungkinan Alasan:
Alasan kesalahan ini bisa jadi SQL Server tidak dimulai ulang setelah mengonfigurasi PolyBase.
Kemungkinan Solusi:
Mulai ulang SQL Server. Periksa Log Server DWEngine untuk mengonfirmasi tidak ada pemutusan DMS setelah memulai ulang.
Pengguna yang diperlukan untuk akses HDFS
Skenario:
SQL Server terhubung ke kluster Hadoop yang tidak aman (Kerberos tidak diaktifkan). PolyBase dikonfigurasi untuk mendorong komputasi ke kluster Hadoop.
Kueri Sampel:
select count(*) from foo WITH (FORCE EXTERNALPUSHDOWN);
Pesan kesalahan yang mirip dengan berikut ini dikembalikan:
Msg 105019, Tingkat 16, Status 1, Baris 1
EXTERNAL TABLE akses gagal karena kesalahan internal: 'pengecualian Java dimunculkan saat panggilan ke JobSubmitter_PollJobStatus: Kesalahan [java.net.ConnectException: Panggilan dari big1506sql2016/172.16.1.4 ke 0.0.0.0:10020 gagal karena pengecualian koneksi: java.net ConnectException: Koneksi ditolak: tidak ada informasi lebih lanjut; Untuk informasi lebih lanjut, lihat: http://wiki.apache.org/hadoop/ConnectionRefused] terjadi saat mengakses file eksternal.'
Penyedia OLE DB "SQLNCLI11" untuk server tertaut "(null)" mengembalikan pesan "Kesalahan yang tidak ditentukan".
Msg 7421, Tingkat 16, Status 2, Baris 1
Tidak dapat mengambil set baris dari penyedia OLE DB "SQLNCLI11" untuk server tertaut "(null)". .
Kesalahan Log Hadoop YARN:
Pengaturan pekerjaan gagal : org.apache.hadoop.security.AccessControlException: Izin ditolak: user=pdw_user, access=WRITE, inode="/user":hdfs:hdfs:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:265) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:251) di org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:232) org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:176) di org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5525)
Kemungkinan Alasan:
Dengan Kerberos dinonaktifkan, PolyBase akan menggunakan pdw_user sebagai pengguna untuk mengakses HDFS dan mengirimkan pekerjaan MapReduce.
Kemungkinan Solusi:
Buat pdw_user di Hadoop dan berikan izin yang memadai ke direktori yang digunakan selama pemrosesan mapreduce. Pastikan juga bahwa pdw_user adalah pemilik direktori HDFS /user/pdw_user.
Di bawah ini adalah contoh cara membuat direktori beranda dan menetapkan izin untuk pdw_user:
sudo -u hdfs hadoop fs -mkdir /user/pdw_user
sudo -u hdfs hadoop fs -chown pdw_user /user/pdw_user
Setelah ini pastikan bahwa pdw_user telah membaca, menulis, dan menjalankan izin pada direktori /user/pdw_user. Pastikan direktori /tmp memiliki 777 izin.
Untuk informasi selengkapnya tentang pemecahan masalah PolyBase dan Kerberos, lihat Memecahkan masalah konektivitas PolyBase Kerberos.
Kesalahan memori Java karena UTF-8
Skenario:
SQL Server PolyBase disiapkan dengan Kluster Hadoop atau Azure Blob Storage. Kueri Pilih apa pun gagal dengan kesalahan berikut:
Msg 106000, Tingkat 16, Status 1, Baris 1
Ruang timbunan Java
Kemungkinan Alasan:
Input yang tidak valid dapat menyebabkan galat kehabisan memori pada Java. File mungkin tidak dalam format UTF-8. DMS berupaya membaca seluruh file sebagai satu baris karena tidak bisa mengurai pemisah baris, sehingga menemui error Java heap space.
Kemungkinan Solusi:
Konversikan file ke format UTF-8 karena PolyBase saat ini memerlukan format UTF-8 untuk file yang dibatasi teks.
Konfigurasi konektivitas Hadoop
Mengonfigurasi SQL Server PolyBase untuk menyambungkan ke Azure Blob Storage mengembalikan pesan kesalahan berikut di SQL Server:
Msg 105019, Level 16, State 1, Line 74
EXTERNAL TABLE akses gagal karena kesalahan internal: 'pengecualian Java yang dimunculkan saat memanggil HdfsBridge_Connect: Error [No FileSystem for scheme: wasbs] terjadi saat mengakses file eksternal.'
Kemungkinan Alasan:
Konektivitas Hadoop tidak disetel ke nilai konfigurasi untuk mengakses penyimpanan Azure Blob.
Kemungkinan Solusi:
Atur konektivitas Hadoop ke nilai (sebaiknya 7) yang mendukung Azure Blob Storage dan mulai ulang SQL Server. Untuk daftar nilai konektivitas dan jenis yang didukung, lihat Konfigurasi Konektivitas PolyBase.
Buat Tabel Sebagai Kesalahan pilih
Skenario:
Mencoba mengekspor data ke Azure Blob Storage atau sistem file Hadoop menggunakan sintaks PolyBase dengan CREATE EXTERNAL TABLE AS SELECT (CETAS) dari SQL Server gagal dengan pesan kesalahan berikut:
Msg 156, Tingkat 15, Status 1, Baris 177
Sintaksis yang salah di dekat kata kunci 'WITH'.
Msg 319, Tingkat 15, Status 1, Baris 177
Sintaksis yang salah di dekat kata kunci 'dengan'. Jika pernyataan ini adalah ekspresi tabel umum, klausa xmlnamespaces atau klausa konteks pelacakan perubahan, pernyataan sebelumnya harus dihentikan dengan titik koma.
Kemungkinan Alasan:
Saat mengekspor data ke Hadoop atau Azure Blob Storage melalui PolyBase, hanya data yang diekspor, bukan nama kolom (metadata) seperti yang didefinisikan dalam CREATE EXTERNAL TABLE perintah.
Kemungkinan Solusi:
Buat tabel eksternal terlebih dahulu lalu gunakan INSERT INTO SELECT untuk mengekspor ke lokasi eksternal. Untuk sampel kode, lihat skenario kueri PolyBase.
Membuat Tabel Eksternal dari Azure Blob Storage gagal
Skenario:
Kumpulan SQL khusus (sebelumnya SQL DW) disiapkan untuk mengimpor data dari Azure Blob Storage. Membuat tabel eksternal gagal dan menampilkan pesan berikut.
Msg 105019, Tingkat 16, Status 1, Baris 34
Akses eksternal TABLE gagal karena kesalahan internal: 'terjadi pengecualian Java saat memanggil HdfsBridge_IsDirExist. Pesan pengecualian Java:com.microsoft.azure.storage.StorageException: Server gagal mengautentikasi permintaan. Pastikan nilai header Otorisasi dibentuk dengan benar termasuk tanda tangan.: Kesalahan [com.microsoft.azure.storage.StorageException: Server gagal mengautentikasi permintaan. Pastikan nilai header Otorisasi terbentuk dengan benar termasuk tanda tangan.] terjadi saat mengakses file eksternal.'
Kemungkinan Alasan:
Kunci penyimpanan Azure yang salah digunakan untuk membuat kredensial lingkup database.
Kemungkinan Solusi:
Letakkan semua objek terkait (yaitu: sumber data, format file) lalu letakkan dan buat ulang kredensial cakupan database dengan kunci penyimpanan yang tepat.
Kapitalisasi konfigurasi Kerberos
Skenario:
SQL Server disiapkan dengan Kluster Cloudera yang diaktifkan Kerberos. SQL Server telah dimulai ulang setelah semua konfigurasi berubah. Layanan PolyBase Engine dan PolyBase Data Movement berjalan setelah restart. Pesan kesalahan berikut dikembalikan:
Sumber data dikonfigurasi tanpa lokasi pelacak tugas:
org.apache.hadoop.fs.FileSystem: Penyedia org.apache.hadoop.fs.viewfs.ViewFileSystem tidak dapat diinstansiasi
Sumber data yang dikonfigurasi dengan lokasi job tracker:
Kesalahan [Tidak dapat mengambil realm Kerberos] terjadi saat mengakses file eksternal
Kemungkinan Alasan:
Nilai properti "hadoop.security.authentication" dalam Coresite.xml adalah kerberos.
Kemungkinan Solusi:
Properti "hadoop.security.authentication" di Coresite.xml harus bernilai KERBEROS (semua huruf besar).
Untuk informasi selengkapnya tentang pemecahan masalah PolyBase dan Kerberos, lihat Memecahkan masalah konektivitas PolyBase Kerberos.
Mapred-site.xml tidak memiliki nilai yang diperlukan
Skenario:
SQL Server atau APS disiapkan dengan Kluster HDP yang didukung. Kueri yang tidak memerlukan operasi pushdown berfungsi, tetapi akan gagal dengan pesan berikut saat hint 'FORCE PUSHDOWN' digunakan, dengan pesan kesalahan berikut:
Msg 7320, Tingkat 16, Status 110, Baris 35
Tidak dapat menjalankan kueri "Remote Query" pada penyedia OLE DB "SQLNCLI11" untuk server tertaut "(null)". EXTERNAL TABLE akses gagal karena galat internal: 'pengecualian Java yang muncul saat memanggil JobSubmitter_PollJobStatus: Galat [org.apache.hadoop.ipc.RemoteException(java.lang.NullPointerException): java.lang.NullPointerException
di org.apache.hadoop.mapreduce.v2.hs.HistoryClientService$HSClientProtocolHandler.getTaskAttemptCompletionEvents(HistoryClientService.java:277)
di org.apache.hadoop.mapreduce.v2.api.impl.pb.service.MRClientProtocolPBServiceImpl.getTaskAttemptCompletionEvents(MRClientProtocolPBServiceImpl.java:173)
at org.apache.hadoop.yarn.proto.MRClientProtocol$MRClientProtocolService$2.callBlockingMethod(MRClientProtocol.java:283)
di org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
di org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
di org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2127)
di org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2123)
di java.security.AccessController.doPrivileged(Metode Asli)
di javax.security.auth.Subject.doAs(Subject.java:415)
di org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
di org.apache.hadoop.ipc.Server$Handler.run(Server.java:2121)
] terjadi saat mengakses file eksternal.'
Kemungkinan Alasan:
Mapred-site.xml tidak memiliki beberapa nilai yang diperlukan untuk memeriksa hasil antara dan hasil akhir.
Kemungkinan Solusi:
Tambahkan properti berikut dan kaitkan nilai yang benar seperti yang ditunjukkan pada Ambari dalam file mapred-site.xml di SQL Server.
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/user</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/mr-history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/mr-history/tmp</value>
</property>
Mengonfigurasi akses menurut nama host
Skenario:
SQL Server disiapkan untuk mengakses Kluster Hadoop yang didukung. Membuat tabel eksternal mengembalikan salah satu kesalahan berikut:
Tidak dapat menjalankan kueri "Remote Query" pada penyedia OLE DB "SQLNCLI11" untuk server tertaut "(null)". 110802; Terjadi kesalahan DMS internal yang menyebabkan operasi ini gagal. Detail: Pengecualian: Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DmsSqlNativeException, Pesan: SqlNativeBufferReader.Run, kesalahan dalam OdbcExecuteQuery: SqlState: 42000, NativeError: 8680, 'Kesalahan saat memanggil: SQLExecDirect(this->GetHstmt(), (SQLWCHAR *)statementText, SQL_NTS), kode pengembalian SQL: -1 | Info Kesalahan SQL: SrvrMsgState: 26, SrvrSeverity: 17, Error <1>: ErrorMsg: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Internal Query Processor Error: Prosesor kueri mengalami kesalahan tak terduga selama pemrosesan fase kueri jarak jauh. | Kesalahan saat memanggil: pReadConn->ExecuteQuery(statementText, bufferFormat) | state: FFFF, number: 24, koneksi aktif: 8', Connection String: Driver={pdwodbc};APP=RCSmall-DmsNativeReader:WAD1D16HD2001\mpdwsvc (3600)-ODBC-PoolId1433;Trusted_Connection=yes;AutoTranslate=no;Server=\.\pipe\sql\query
[Thread:30544] [AbstractReaderWorker:ErrorEvent] (Kesalahan, Tinggi): QueryId QID2433 PlanId 6c3a4551-e54c-4c06-a5ed-a8733edac691 StepId 7:
Tidak dapat memperoleh blok: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: Tidak dapat memperoleh blok: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
di Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsBridgeReadAccess.Read(MemoryBuffer buffer, Boolean& isDone)
di Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DataReader.ExternalMoveBufferReader.Read()
di Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.ReadAndSendData()
di Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.Execute(Status objek)
Kemungkinan Alasan:
Pesan kesalahan ini dapat muncul ketika Kluster Hadoop disiapkan dalam konfigurasi di mana simpul data hanya dapat diakses di luar kluster menggunakan Nama Host dan bukan alamat IP.
Kemungkinan Solusi:
Tambahkan yang berikut ini ke file hdfs-site.xml di sisi klien (SQL Server). Konfigurasi ini akan memaksa simpul nama untuk mengembalikan URI untuk simpul data dengan Nama Host alih-alih alamat IP internal.
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
Pengaturan folder menyebabkan overhead memori yang berlebihan
Skenario:
SQL Server menjalankan kueri PolyBase pada direktori dengan sejumlah besar file (>30.000 file di bawah jalur direktori secara rekursif), dan salah satu pesan kesalahan berikut dikembalikan:
Msg 105019, Tingkat 16, Status 1, Baris 1
EXTERNAL TABLE akses gagal karena kesalahan internal: 'pengecualian Java terjadi saat memanggil HdfsBridge_GetFileNameByIndex. Pesan pengecualian Java: Batas overhead GC terlampaui: Kesalahan [batas overhead GC terlampaui] saat mengakses file eksternal.'
Msg 105019, Tingkat 16, Status 1, Baris 1
EXTERNAL TABLE akses gagal karena kesalahan internal: 'eksepsi Java terjadi saat memanggil HdfsBridge_GetDirectoryFiles. Pesan pengecualian Java: Java heap space: Kesalahan [Java heap space] terjadi saat mengakses file eksternal.
Kemungkinan Alasan:
Saat memproses jalur, PolyBase menghitung semua file di bawah jalur tersebut, dan ada overhead memori tetap yang terkait dengan struktur data yang digunakan untuk mewakili file. Dengan sejumlah besar file, overhead ini menjadi terlihat dan akhirnya dapat mengonsumsi semua memori yang tersedia untuk JVM.
Kemungkinan Solusi:
Atur ulang data dalam beberapa direktori sehingga setiap direktori berisi subset file dan kemudian memecah kueri dalam beberapa yang beroperasi pada bagian dari jalur asli pada satu waktu dan mewujudkan tabel sebagai tabel SQL Server (sebelum menggabungkannya).
Contoh: Mari kita asumsikan data tabel eksternal Anda berada di lokasi berikut: Pesanan/file1.txt,...,file30K.txt.
Ubah tata letak agar data disusun dalam struktur partisi file konvensional di Orders/yyyy/mm/dd/file1.txt. Arahkan tabel eksternal Anda ke jalur direktori yang lebih rendah seperti bulan(mm) atau hari (dd) dan impor file ke dalam tabel SQL Server dalam potongan-potongan lalu tambahkan sebagai bagian dari satu tabel. Bahkan jika Anda memiliki struktur direktori yang tepat untuk memulai, ikuti langkah #2 untuk dapat bekerja dengan banyak file tanpa kehabisan memori JVM.
Karakter tak terduga dalam file konfigurasi
Skenario:
Menyiapkan SQL Server atau APS dengan kluster Hadoop, yang melibatkan modifikasi yarn-site.xml, hdfs-site.xml, dan file konfigurasi lainnya. Pesan kesalahan SQL Server berikut diamati:
Msg 105019, Tingkat 16, Status 1, Baris 1
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: EXTERNAL TABLE akses gagal karena kesalahan internal: 'eksepsi Java yang dimunculkan saat memanggil HdfsBridge_Connect. Pesan pengecualian Java:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Byte ke-1 tidak valid dalam urutan UTF-8 1-byte: Kesalahan [com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Byte ke-1 tidak valid dalam urutan UTF-8 1-byte] terjadi saat mengakses file eksternal.' --->
Kemungkinan Alasan:
Ini dapat terjadi jika Anda telah menyalin dan menempelkan teks ke dalam file konfigurasi dari situs web atau jendela obrolan. Ada kemungkinan karakter yang tidak diinginkan/tidak dapat dicetak ada dalam file konfigurasi.
Kemungkinan Solusi:
Buka file di editor teks yang berbeda (selain notepad) dan cari karakter ini dan hilangkan. Mulai ulang layanan yang diperlukan.
Kueri tabel Delta mungkin gagal dengan kesalahan 2571 dan 16513
Skenario:
Anda mungkin mengalami kesalahan berikut saat mengkueri tabel Delta eksternal:
Msg 2571, Level 14, State 3, Line 1
User '<user>' does not have permission to run DBCC TRACEON.
Msg 16513, Level 16, State 0, Line 1
Error reading external metadata.
Kemungkinan Alasan:
Ini bisa terjadi karena ada QUERYTRACEON petunjuk kueri yang dapat ditambahkan ke kueri metadata file Delta dan yang memerlukan sysadmin peran server untuk dijalankan.
Kemungkinan Solusi:
Jika ini terjadi, Anda dapat mengatasi masalah dengan mengaktifkan bendera pelacakan 14073 secara global dan ini akan mencegah petunjuk kueri ditambahkan.