Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Ez a cikk a PolyBase gyakori hibaforgatókönyveit és megoldásait tartalmazza.
A PolyBase monitorozásával és hibaelhárításával kapcsolatos további információkért lásd a PolyBase monitorozását és hibaelhárítását.
A PolyBase-naplófájlok gyakori helyei Windowsban és Linuxon: PolyBase monitorozása és hibaelhárítása.
Hibaüzenetek és lehetséges megoldások
Az SQL Server 2022 frissítése érvénytelen oszlopnév miatt meghiúsult (kis- és nagybetűk megkülönböztetése)
Ez a hiba akkor fordulhat elő, ha az SQL Server kumulatív frissítések telepítését egy olyan kiszolgálón alkalmazza, amelyen a PolyBase szolgáltatás telepítve van, és a kis- és nagybetűk megkülönböztetésével rendezi az adatokat, a jelentett hibafrissítési üzenet a következő:
Példa hibaüzenet: 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.
Ok:
A frissítési eljárás során az SQL Server-szkript nem tudott sikeresen befejeződni a kis- és nagybetűk érzékenysége miatt.
Megoldás: Ez a probléma véglegesen ki lesz javítva a közelgő kumulatív frissítésben.
Átmeneti megoldás:
- A 902-es nyomkövetési jelző engedélyezése.
- Indítsa el az SQL Servert.
- Módosítsa a "DWConfiguration" adatbázis kiosztását CS (kis- és nagybetűk megkülönböztetésére) státuszból CI (kis- és nagybetűk figyelembevételére) státuszra.
- Futtassa újra a frissítést.
- Tiltsa le a nyomkövetési jelző 902-et.
- Indítsa újra az SQL Servert.
- Módosítsa a "DWConfiguration" adatbázis rendezését CI-ről (kis- és nagybetűk nem megkülönböztetésére) CS-re (kis- és nagybetűk megkülönböztetésére).
A nyomkövetési jelzők alternatívaként annak érdekében, hogy a probléma ne fordul elő az összegző frissítés előtt, ellenőrizze, hogy a DWConfiguration adatbázis a kis- és nagybetűk megkülönböztetésére (CS) vonatkozó rendezést használ-e. Fontolja meg a kis- és nagybetűkre nem érzékeny rendezési sorrend módosítását, a kumulatív frissítés alkalmazását, majd a rendezési sorrend visszaállítását az eredetire.
Hiba: "100001; Nem sikerült létrehozni a lekérdezési tervet"
A "Nem sikerült lekérdezési terv létrehozása" hiba akkor fordulhat elő, ha az SQL Server adatbázismotorját legalább a 8. kumulatív frissítésre (15.0.4073) javították, de a PolyBase szolgáltatás nem lett frissítve ugyanarra a buildre. Ez akkor fordulhat elő, ha a PolyBase szolgáltatást hozzáadja egy meglévő SQL Server-példányhoz. További információ: PolyBase hiba – 100001; Nem sikerült létrehozni a lekérdezési tervet.
Mindig kövesse a PolyBase szolgáltatás telepítését úgy, hogy az új funkciót ugyanazon verziószintre emeli. Szükség szerint telepítse a szervizcsomagokat (SP-ket), a kumulatív frissítéseket (CU-kat) és/vagy az általános terjesztési kiadásokat (GDR-ket). A PolyBase verziójának meghatározásához lásd: Az SQL Server és összetevőinek verziójának, kiadásának és frissítési szintjének meghatározása.
Szolgáltatásfiók módosítása
Példa hibaüzenet:
107035; A Dms-engedélyezés meghiúsult, mert a(z) [TARTOMÁNY\felhasználó] nem tagja a csoportnak [PdwDataMovementAccess]
107017; Érvénytelen DMS-vezérlőfejléc:
Ezt a hibát valószínűleg a PolyBase szolgáltatásfiók módosítása okozza. A PolyBase Motor és a PolyBase Data Movement szolgáltatás szolgáltatásfiókjainak módosításához távolítsa el és telepítse újra a PolyBase szolgáltatást.
Adatáthelyezési szolgáltatás engedélyekkel kapcsolatos hibái
Az adatáthelyezési szolgáltatás engedélyekkel kapcsolatos problémáinak elhárításáról és megoldásáról további információt a PolyBase szolgáltatásfiók engedélyeivel és a hiányzó esetekben észlelt gyakori hibákkal kapcsolatban talál.
Windows-hitelesítési hiba
A Windows-hitelesítés meghibásodásával kapcsolatos engedélyproblémák hibaelhárításával és megoldásával kapcsolatos további információkért lásd: PolyBase szolgáltatásfiók engedélyei és gyakori hibák, amelyek akkor észlelhetők, amikor hiányoznak.
A "Távoli lekérdezés" lekérdezés nem hajtható végre
Példa hibaüzenet:
Msg 7320, Level 16, State 110, Line 14
A(z) "(null)" csatolt kiszolgálóhoz tartozó "SQLNCLI11" OLE DB-szolgáltatóval nem lehet végrehajtani a "Távoli lekérdezés" lekérdezést. A lekérdezés megszakadt – a maximális elvetési küszöbérték (0 sor) el lett érve egy külső forrásból való olvasás közben: a feldolgozott összes sorból 1 sor elutasítva. (/nemzet/sensors.ldjson.txt)Oszlop sorszáma: 0, Várt adattípus: INT, Hibás érték: {"id":"S2740036465E2B","time":"2016-02-26T16:59:02.9300000Z","temp":23.3,"hum":0.77,"wind":17,"press":1032,"loc":[-76.90914996169623,38.8929314364726]} (Oszlopkonvertálási hiba), Hiba: Hiba történt az NVARCHAR adattípus INT-be való konvertálása során.
Ne feledje, hogy ennek a hibának lehetnek származtatásai. Az első elutasított fájl neve megjelenik az SQL Server Management Studióban (SSMS) sértő adattípusokkal vagy értékekkel.
Lehetséges ok:
A hiba oka az, hogy minden fájl más sémával rendelkezik. A PolyBase külső tábla DDL-je, amikor egy könyvtárra mutat, rekurzívan beolvassa az adott könyvtárban lévő összes fájlt. Ha egy oszlop vagy adattípus nem egyezik, ez a hiba az SSMS-ben jelenhet meg.
Lehetséges megoldás:
Ha az egyes táblák adatai egy fájlból állnak, akkor használja a fájlnevet a külső fájlok könyvtára által előtagolt LOCATION szakaszban.
Ha táblánként több fájl is van, helyezze az egyes fájlokat az Azure Blob Storage különböző könyvtáraiba. A HELY pont egy adott fájl helyett a könyvtárra mutat. Ez a megoldás ajánlott.
Example:
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...);
Megjegyzés:
SQL Server Native Client (SNAC) nincs a következőkkel szállítva:
- SQL Server 2022 (16.x) és újabb verziók
- AZ SQL Server Management Studio 19- és újabb verziói
Az SQL Server natív ügyfele (SQLNCLI vagy SQLNCLI11) és az örökölt Microsoft OLE DB Provider for SQL Server (SQLOLEDB) nem ajánlott az új alkalmazásfejlesztéshez.
Új projektek esetén használja az alábbi illesztőprogramok egyikét:
Az SQL Server adatbázismotor összetevőjeként futó SQLNCLI esetében (2012 és 2019 között), lásd ezt a Támogatási életciklus kivételt.
Kerberos-támogatás
Az SQL Server egy támogatott Hadoop-fürt elérésére van konfigurálva. A Hadoop-fürtben a Kerberos-biztonság nincs érvényben.
A külső táblából való kiválasztás a következő hibát adja vissza:
Msg 105019, 16. szint, 1. állapot, 55. sor
A KÜLSŐ TÁBLA hozzáférése belső hiba miatt sikertelen volt: "HdfsBridge_Connect hívása során Java-kivétel lépett fel: [LoginClass példányosítása sikertelen] hiba történt a külső fájl elérésekor."
Msg 7320, Level 16, State 110, Line 55
A(z) "(null)" csatolt kiszolgálóhoz tartozó "SQLNCLI11" OLE DB-szolgáltatóval nem lehet végrehajtani a "Távoli lekérdezés" lekérdezést. A KÜLSŐ TÁBLA hozzáférése belső hiba miatt meghiúsult: 'Java-kivétel lépett fel a HdfsBridge_Connect hívása során: [A LoginClass példányosítása sikertelen] hibát okozott a külső fájl elérése közben.'
A DWEngine-kiszolgáló naplójának lekérdezése a következő hibát mutatja:
[Szál:16432] [EngineInstrumentation:EngineQueryErrorEvent] (Hiba, magas szintű)
A KÜLSŐ TÁBLA hozzáférése belső hiba miatt meghiúsult: "Hiba történt a külső fájl elérésekor a com.microsoft.polybase.client.KerberosSecureLogin hiba miatt, amely egy Java-kivételt váltott ki a HdfsBridge_Connect hívásakor." Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: A KÜLSŐ TÁBLA hozzáférése belső hiba miatt meghiúsult: "A külső fájl elérése közben hiba történt a HdfsBridge_Connect (com.microsoft.polybase.client.KerberosSecureLogin] híváskor fellépő Java-kivétel miatt." >--- Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException: Java-kivétel lépett fel a HdfsBridge_Connect hívása során: A külső fájl elérésekor a [com.microsoft.polybase.client.KerberosSecureLogin] hiba lépett fel.
Lehetséges ok:
A Kerberos nincs engedélyezve a Hadoop-fürtben, de a Kerberos-biztonság engedélyezve van a core-site.xml, a yarn-site.xml vagy az alapértelmezés szerint a "Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf" alatt található hdfs-site.xml fájlokban. Linuxon a fájlok alapértelmezés szerint a /var/opt/mssql/binn/polybase/hadoop/conf/ helyen találhatók.
Lehetséges megoldás:
Kikommentelje a Kerberos biztonsági információt a fent említett fájlokban.
További információ a PolyBase és a Kerberos hibaelhárításáról: PolyBase Kerberos-kapcsolat hibaelhárítása.
Belső lekérdezésfeldolgozó hibája
Egy külső tábla lekérdezése a következő hibát adja vissza:
Msg 8680, Level 17, State 5, Line 118
Belső lekérdezésfeldolgozó hiba: A lekérdezésfeldolgozó váratlan hibát észlelt egy távoli lekérdezési fázis feldolgozása során.
A DWEngine kiszolgálónaplója a következő üzeneteket tartalmazza:
[Szál:5216] [ControlNodeMessenger:ErrorEvent] (Hiba, magas): ***** DMS-rendszer leválasztotta a csomópontokat:
[Szál:5216] [ControlNodeMessenger:ErrorEvent] (Hiba, súlyos): ***** A DMS rendszer leválasztotta a csomópontokat:
[Szál:5216] [ControlNodeMessenger:ErrorEvent] (Hiba, súlyos): ***** DMS-rendszer leválasztotta a csomópontokat :
Lehetséges ok:
A hiba oka az lehet, hogy az SQL Server nem lett újraindítva a PolyBase konfigurálása után.
Lehetséges megoldás:
Indítsa újra az SQL Servert. Ellenőrizze a DWEngine szerver naplóját, hogy az újraindítás után nincsenek-e DMS kapcsolat-megszakítások.
A HDFS-hozzáféréshez szükséges felhasználó
Forgatókönyv:
Az SQL Server nem biztonságos Hadoop-fürthöz csatlakozik (a Kerberos nincs engedélyezve). A PolyBase úgy van konfigurálva, hogy továbbítsa a számításokat a Hadoop-fürtbe.
Minta lekérdezés:
select count(*) from foo WITH (FORCE EXTERNALPUSHDOWN);
A következőhöz hasonló hibaüzenet jelenik meg:
Msg 105019, 16. szint, 1. állapot, 1. sor
A KÜLSŐ TÁBLA hozzáférése belső hiba miatt meghiúsult: "A JobSubmitter_PollJobStatus híváskor fellépő Java-kivétel: Hiba [java.net.ConnectException: Hívás big1506sql2016/172.16.1.4-től 0.0.0.0:10020-ig sikertelen volt a kapcsolat kivétele esetén: java.net ConnectException: A kapcsolat elutasítva: nincs további információ; További információ: http://wiki.apache.org/hadoop/ConnectionRefused] a külső fájl elérése közben történt."
A(z) "(null)" csatolt kiszolgáló OLE DB-szolgáltatója "SQLNCLI11" üzenetet adott vissza: "Meghatározatlan hiba".
Msg 7421, Level 16, State 2, Line 1
A(z) "(null)" csatolt kiszolgálóhoz tartozó "SQLNCLI11" OLE DB-szolgáltatótól nem lehet beolvasni a sorhalmazt. .
Hadoop Yarn hibajelentés a naplóból:
Feladat beállítása sikertelen volt: org.apache.hadoop.security.AccessControlException: Engedély megtagadva: 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) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:232) org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:176) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5525)
Lehetséges ok:
Ha a Kerberos le van tiltva, a PolyBase pdw_user fogja használni felhasználóként a HDFS eléréséhez és a MapReduce-feladatok elküldéséhez.
Lehetséges megoldás:
Hozzon létre pdw_user a Hadoopon, és adjon megfelelő engedélyeket a mapreduce feldolgozása során használt könyvtáraknak. Győződjön meg arról is, hogy pdw_user a /user/pdw_user HDFS könyvtár tulajdonosa.
Az alábbi példa bemutatja, hogyan hozhat létre egy felhasználói kezdőkönyvtárat, és hogyan rendelhet hozzá jogosultságokat a pdw_user számára.
sudo -u hdfs hadoop fs -mkdir /user/pdw_user
sudo -u hdfs hadoop fs -chown pdw_user /user/pdw_user
Ezután győződjön meg arról, hogy pdw_user rendelkezik olvasási, írási és végrehajtási engedélyekkel a /user/pdw_user könyvtárban. Győződjön meg arról, hogy a /tmp könyvtár 777 engedélyekkel rendelkezik.
További információ a PolyBase és a Kerberos hibaelhárításáról: PolyBase Kerberos-kapcsolat hibaelhárítása.
Java-memóriahiba az UTF-8 miatt
Forgatókönyv:
Az SQL Server PolyBase a Hadoop Cluster vagy az Azure Blob Storage használatával van konfigurálva. A select lekérdezés a következő hibával meghiúsul:
Msg 106000, Level 16, State 1, Line 1
Java-halomterület
Lehetséges ok:
Az illegális bemenet a java memóriavesztését okozhatja. Előfordulhat, hogy a fájl nem UTF-8 formátumú. A DMS egy sorként próbálja beolvasni a teljes fájlt, mivel nem tudja dekódolni a sorelválasztót, és Java halomtérhiba lép fel.
Lehetséges megoldás:
Konvertálja a fájlt UTF-8 formátumra, mivel a PolyBase jelenleg UTF-8 formátumot igényel a szöveghatárolt fájlokhoz.
Hadoop-kapcsolat konfigurálása
Ha az SQL Server PolyBase-t az Azure Blob Storage-hoz való csatlakozásra konfigurálja, a következő hibaüzenet jelenik meg az SQL Serverben:
Msg 105019, Level 16, State 1, Line 74
A külső tábla hozzáférése belső hiba miatt meghiúsult: "A HdfsBridge_Connect hívása során kiváltott Java-kivétel: Hiba lépett fel a külső fájl elérése közben [Nincs fájlrendszer a sémához: wasbs]."
Lehetséges ok:
A Hadoop-kapcsolat nincs beállítva az Azure Blob Storage eléréséhez szükséges konfigurációs értékre.
Lehetséges megoldás:
Állítsa be a Hadoop-kapcsolatot egy olyan értékre (lehetőleg 7), amely támogatja az Azure Blob Storage-t, és indítsa újra az SQL Servert. A kapcsolati értékek és a támogatott típusok listáját a PolyBase kapcsolati konfigurációja című témakörben találja.
Tábla létrehozása kijelölési hibaként
Forgatókönyv:
Ha a PolyBase használatával próbál adatokat exportálni az Azure Blob Storage-ba vagy Hadoop fájlrendszerbe az SQL ServerBŐL származó CREATE EXTERNAL TABLE AS SELECT (CETAS) szintaxissal, az alábbi hibaüzenettel meghiúsul:
Msg 156, Level 15, State 1, Line 177
Helytelen szintaxis a "WITH" kulcsszó közelében.
Msg 319, Level 15, State 1, Line 177
Helytelen szintaxis a következő kulcsszó közelében: "with". Ha ez az utasítás egy közös táblakifejezés, xmlnamespaces záradék vagy változáskövetési környezeti záradék, akkor az előző utasítást pontosvesszővel kell megszüntetni.
Lehetséges ok:
Amikor adatokat exportál a Hadoopba vagy az Azure Blob Storage-ba a PolyBase-en keresztül, csak az adatokat exportálja a rendszer, a CREATE EXTERNAL TABLE parancsban meghatározott oszlopneveket (metaadatokat) nem.
Lehetséges megoldás:
Először hozza létre a külső táblát, majd az INSERT INTO SELECT használatával exportáljon a külső helyre. Kódmintáért lásd a PolyBase lekérdezési forgatókönyveit.
Külső tábla létrehozása az Azure Blob Storage-ból sikertelen
Forgatókönyv:
A dedikált SQL-készlet (korábbi nevén SQL DW) úgy van beállítva, hogy adatokat importáljon az Azure Blob Storage-ból. A külső tábla létrehozása az alábbi üzenettel meghiúsul.
Üzenet 105019, Szint 16, Állapot 1, Sor 34
A külső TABLE-hozzáférés belső hiba miatt meghiúsult: "Java-kivétel lépett fel a HdfsBridge_IsDirExist hívásakor. Java-kivételüzenet:com.microsoft.azure.storage.StorageException: A kiszolgáló nem tudta hitelesíteni a kérést. Győződjön meg arról, hogy az Engedélyezési fejléc helyesen van formázva, beleértve az aláírást is. Hiba: [com.microsoft.azure.storage.StorageException: A kiszolgáló nem tudta hitelesíteni a kérést. Győződjön meg arról, hogy az Engedélyezési fejléc helyesen van formázva, beleértve az aláírást is.] a külső fájl elérése közben történt."
Lehetséges ok:
Helytelen Azure Storage-kulcsot használtunk az adatbázis hatókörébe tartozó hitelesítő adatok létrehozásához.
Lehetséges megoldás:
Helyezze el az összes kapcsolódó objektumot (például adatforrást, fájlformátumot), majd helyezze el és hozza létre újra az adatbázis hatókörébe tartozó hitelesítő adatokat a megfelelő tárkulccsal.
Kerberos-konfiguráció nagybetűsítése
Forgatókönyv:
Az SQL Server a Kerberos-kompatibilis Cloudera-fürttel van beállítva. Az SQL Server a konfiguráció minden módosítása után újraindult. A PolyBase Engine és a PolyBase adatáthelyezési szolgáltatások újraindítás után futnak. A rendszer a következő hibaüzeneteket adja vissza:
A feladatkövető helye nélkül konfigurált adatforrás:
org.apache.hadoop.fs.FileSystem: A(z) org.apache.hadoop.fs.viewfs.ViewFileSystem szolgáltató nem példányosítható.
A feladatkövető helyével konfigurált adatforrás:
A [Kerberos-tartomány nem érhető el] hiba történt a külső fájl elérésekor
Lehetséges ok:
A "hadoop.security.authentication" tulajdonság értékeként a Coresite.xml a kerberost jelöli.
Lehetséges megoldás:
A Coresite.xml "hadoop.security.authentication" tulajdonságának értékeként KERBEROS-t (minden nagybetűvel) kell megadni.
További információ a PolyBase és a Kerberos hibaelhárításáról: PolyBase Kerberos-kapcsolat hibaelhárítása.
Mapred-site.xml hiányzó szükséges értékek
Forgatókönyv:
Az SQL Server vagy az APS támogatott HDP-fürttel van beállítva. Azok a lekérdezések, amelyek nem igényelnek leküldéses munkát, de a következő üzenettel meghiúsulnak, amikor a "FORCE PUSHDOWN" tippet használja a következő hibaüzenetekkel:
Msg 7320, Level 16, State 110, Line 35
A(z) "(null)" csatolt kiszolgálóhoz tartozó "SQLNCLI11" OLE DB-szolgáltatóval nem lehet végrehajtani a "Távoli lekérdezés" lekérdezést. A külső táblához való hozzáférés belső hiba miatt nem sikerült: Java-kivétel történt a JobSubmitter_PollJobStatus hívásakor: Hiba [org.apache.hadoop.ipc.RemoteException(java.lang.NullPointerException): java.lang.NullPointerException
at org.apache.hadoop.mapreduce.v2.hs.HistoryClientService$HSClientProtocolHandler.getTaskAttemptCompletionEvents(HistoryClientService.java:277)
at 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)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
at org.apache.hadoop.ipc.Server$Handler$1.run (Server.java:2127)
at org.apache.hadoop.ipc.Server$Handler$1.run (Server.java:2123)
a java.security.AccessController.doPrivileged(natív metódus)
a javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2121)
] a külső fájl elérése közben történt."
Lehetséges ok:
Mapred-site.xml hiányzik néhány olyan szükséges érték, amely a köztes és a záró eredményeket ellenőrzi.
Lehetséges megoldás:
Adja hozzá a következő tulajdonságokat, és társítsa a megfelelő értékeket az Ambariban látható módon az SQL Server mapred-site.xml fájljában.
<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>
Hozzáférés konfigurálása gazdagépnév alapján
Forgatókönyv:
Az SQL Server egy támogatott Hadoop-fürt elérésére van beállítva. Egy külső tábla létrehozása az alábbi hibák egyikét adja vissza:
A(z) "(null)" csatolt kiszolgálóhoz tartozó "SQLNCLI11" OLE DB-szolgáltatóval nem lehet végrehajtani a "Távoli lekérdezés" lekérdezést. 110802; Belső DMS-hiba történt, amely miatt a művelet meghiúsult. Részletek: Kivétel: Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DmsSqlNativeException, Üzenet: SqlNativeBufferReader.Run, hiba az OdbcExecuteQueryben: SqlState: 42000, NativeError: 8680, "Hiba a hívásban: SQLExecDirect(this-GetHstmt>(), (SQLWCHAR *)statementText, SQL_NTS), SQL return code: -1 | SQL-hibainformáció: SrvrMsgState: 26, SrvrSeverity: 17, 1<. hiba>: Hibaüzenet: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Belső lekérdezésfeldolgozó hiba: A lekérdezésfeldolgozó váratlan hibát észlelt egy távoli lekérdezési fázis feldolgozása során. Hiba híváskor: pReadConn-ExecuteQuery >(statementText, bufferFormat) | állapot: FFFF, szám: 24, aktív kapcsolatok: 8', Kapcsolati karakterlánc: Driver={pdwodbc}; APP=RCSmall-DmsNativeReader:WAD1D16HD2001\mpdwsvc (3600)-ODBC-PoolId1433; Trusted_Connection=igen; AutoTranslate=nem; Server=\.\pipe\sql\query
[Szál:30544] [AbstractReaderWorker:ErrorEvent] (Hiba, magas): QueryId QID2433 PlanId 6c3a4551-e54c-4c06-a5ed-a8733edac691 StepId 7:
Nem sikerült a blokk beszerzése: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: Nem sikerült beszerezni a blokkot: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
at Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsBridgeReadAccess.Read(MemoryBuffer buffer, Boolean&isDone)
at Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DataReader.ExternalMoveBufferReader.Read()
at Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.ReadAndSendData()
at Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.Execute(Object status)
Lehetséges ok:
Ez a hibaüzenet akkor jelenhet meg, ha a Hadoop-fürt olyan konfigurációban van beállítva, amelyben az adatcsomópontok hozzáférhetősége csak a fürtön kívül lehetséges a hostnév, nem pedig az IP-cím használatával.
Lehetséges megoldás:
Adja hozzá a következőket hdfs-site.xml fájlhoz az ügyfél (SQL Server) oldalán. Ez a konfiguráció arra kényszeríti a névcsomópontot, hogy a belső IP-cím helyett a gazdagépnévvel rendelkező adatcsomópontok URI-ját adja vissza.
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
A mappaszervezet többletmemória-többletterhelést kényszerít ki
Forgatókönyv:
Az SQL Server egy PolyBase-lekérdezést futtat egy nagy számú fájllal rendelkező címtárban (>rekurzív módon 30 000 fájlt a könyvtár elérési útja alatt), és a következő hibaüzenetek egyike jelenik meg:
Msg 105019, 16. szint, 1. állapot, 1. sor
A KÜLSŐ TÁBLA hozzáférése belső hiba miatt meghiúsult: "Java-kivétel lépett fel a HdfsBridge_GetFileNameByIndex hívásakor. Java-kivételüzenet: A GC többletterhelési korlátja túllépve: A külső fájl elérése során [GC többletterhelési korlát túllépve] hiba történt."
Msg 105019, 16. szint, 1. állapot, 1. sor
A KÜLSŐ TÁBLA hozzáférése belső hiba miatt meghiúsult: "Java-kivétel lépett fel a HdfsBridge_GetDirectoryFiles hívásakor. Java-kivételüzenet: Java-halomterület: Hiba történt a külső fájl elérésekor."
Lehetséges ok:
Az elérési út feldolgozásakor a PolyBase az elérési út alatt lévő összes fájlt számba iktatja, és a fájlok megjelenítéséhez használt adatstruktúrához rögzített memóriaterhelés tartozik. Nagy számú fájl esetén ez a többletterhelés észrevehetővé válik, és végül a JVM számára elérhető összes memóriát felhasználhatja.
Lehetséges megoldás:
Átrendezheti az adatokat több könyvtárban úgy, hogy minden könyvtár tartalmaz egy fájlhalmazt, majd bontsa le a lekérdezést több olyan könyvtárban, amelyek az eredeti elérési út egy részén működnek egy időben, és a táblákat SQL Server-táblákként (a csatlakozás előtt) valósítsa meg.
Példa: Tegyük fel, hogy a külső tábla adatai a következő helyen találhatók: Rendelések/file1.txt,...,file30K.txt.
Módosítsa az elrendezést, hogy az adatok egy hagyományos fájlpartíciós struktúrában legyen elhelyezve az Orders/yyy/mm/dd/file1.txt. Iránymutassa külső tábláját egy alacsonyabb könyvtár útvonalra, például hónap(mm) vagy nap(dd), és importálja a fájlokat az SQL Server táblákba részenként, majd adja hozzá őket egy táblához, annak részeként. Még akkor is, ha a megfelelő könyvtárszerkezettel rendelkezett, kövesse a 2. lépést, hogy a JVM-memória elfogyása nélkül tudjon dolgozni ezzel a sok fájllal.
Váratlan karakterek a konfigurációs fájlokban
Forgatókönyv:
SQL Server vagy APS beállítása Hadoop-fürttel, amely magában foglalja yarn-site.xml, hdfs-site.xmlés egyéb konfigurációs fájlok módosítását. A rendszer a következő SQL Server-hibaüzenetet figyeli meg:
Msg 105019, 16. szint, 1. állapot, 1. sor
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: A KÜLSŐ TÁBLA hozzáférése belső hiba miatt meghiúsult: "Java-kivétel lépett fel a HdfsBridge_Connect hívásakor. Java kivételüzenet: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Érvénytelen 1. bájt az 1 bájtos UTF-8 sorozatban.: Hiba [com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Érvénytelen 1. bájt az 1 bájtos UTF-8 sorozatban.] a külső fájl elérése közben történt." --->
Lehetséges ok:
Ez akkor fordulhat elő, ha egy webhelyről vagy csevegőablakból másolt és beillesztett szöveget konfigurációs fájlokba. Lehetséges, hogy a nem kívánt/nyomtathatatlan karakterek szerepelnek a konfigurációs fájlokban.
Lehetséges megoldás:
Nyissa meg a fájlokat egy másik szövegszerkesztőben (a jegyzettömbön kívül), és keresse meg ezeket a karaktereket, és szüntesse meg őket. Indítsa újra a szükséges szolgáltatásokat.
A Delta-tábla lekérdezése a 2571-ben és az 16513-at tartalmazó hiba esetén meghiúsulhat
Forgatókönyv:
Külső Delta-tábla lekérdezésekor a következő hibaüzenet jelenhet meg:
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.
Lehetséges ok:
Ez azért fordulhat elő, mert van egy QUERYTRACEON lekérdezési tipp, amely hozzáadható a Delta-fájl metaadat-lekérdezéséhez, és amelyhez kiszolgálói szerepkört kell sysadmin végrehajtani.
Lehetséges megoldás:
Ha ez történik, a problémát az 14073 nyomkövetési jelző globális engedélyezésével oldhatja meg, és ez megakadályozza a lekérdezési tipp hozzáadását.
Lásd még
- PolyBase- monitorozása és hibaelhárítása
- PolyBase Kerberos-kapcsolat hibaelhárítása
- PolyBase – Gyakori kérdések