Dela via


PolyBase-fel och möjliga lösningar

Gäller för:SQL Server

Den här artikeln innehåller vanliga felscenarier och lösningar för PolyBase.

Mer information om övervakning och felsökning av PolyBase finns i Övervaka och felsöka PolyBase.

Vanliga PolyBase-loggfilplatser i Windows och Linux finns i Övervaka och felsöka PolyBase.

Felmeddelanden och möjliga lösningar

SQL Server 2022-uppdateringen misslyckades på grund av ogiltigt kolumnnamn (skiftlägeskänsligt)

Det här felet kan inträffa när du installerar kumulativa uppdateringar för SQL Server på en server där PolyBase-funktionen är installerad och använder skiftlägeskänslig kollationering. Det rapporterade felmeddelandet för uppgraderingen är följande:

Exempel på felmeddelande: 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.

Orsak:

Under uppgraderingsproceduren misslyckas SQL Server-skriptet med att avsluta på grund av skiftlägeskänsliga värden.

Lösning: Det här problemet kommer att åtgärdas permanent i den kommande kumulativa uppdateringen.

Alternativ lösning:

  1. Aktivera spårningsflagga 902.
  2. Starta SQL Server.
  3. Ändra sorteringsordning för databasen "DWConfiguration" från CS (skiftlägeskänslig) till CI (icke skiftlägeskänslig).
  4. Kör uppgraderingen igen.
  5. Inaktivera spårningsflaggan 902.
  6. Starta om SQL Server.
  7. Ändra sorteringsordningen för databasen "DWConfiguration" tillbaka från CI (skiftlägesokänslig) till CS (skiftlägeskänslig).

Som ett alternativ till spårningsflaggor kontrollerar du om databasen DWConfiguration använder en skiftlägeskänslig sortering (CS) för att förhindra att problemet inträffar före en kumulativ uppdatering. Överväg att ändra den till skiftlägesokänslig sortering (CI), tillämpa den kumulativa uppdateringen, ändra tillbaka den till originalet.

Fel: "100001; Det gick inte att generera frågeplanen"

Felet "Det gick inte att generera frågeplanen" kan inträffa när SQL Server-databasmotorn har korrigerats till minst kumulativ uppdatering 8 (15.0.4073) men PolyBase-funktionen inte har uppdaterats till samma version. Detta kan inträffa när du lägger till PolyBase-funktionen i en befintlig SQL Server-instans. Mer information finns i PolyBase-fel – 100001; Det gick inte att generera en frågeplan.

Följ alltid upp installationen av PolyBase-funktionen genom att föra den nya funktionen upp till samma versionsnivå. Installera Service Pack (SPs), kumulativa uppdateringar (CUs) och/eller allmänna distributionsversioner (GDR) efter behov. Information om hur du fastställer versionen av PolyBase finns i Fastställa version, utgåva och uppdateringsnivå för SQL Server och dess komponenter.

Ändring av tjänstkonto

Exempel på felmeddelande:

107035; Dms-auktoriseringen misslyckades på grund av att [DOMAIN\user] inte är medlem i gruppen [PdwDataMovementAccess]
107017; Ogiltigt DMS-kontrollhuvud:

Det här felet beror troligen på att polybase-tjänstkontot ändras. Om du vill ändra tjänstkontona för PolyBase Engine och PolyBase Data Movement-tjänsten avinstallerar och installerar du om PolyBase-funktionen.

Fel med dataflytttjänstens behörigheter

Mer information om hur du felsöker och löser behörighetsproblem med dataflytttjänsten finns i PolyBase-tjänstkontobehörigheter och vanliga fel som observeras när de saknas.

Windows-autentiseringsfel

Mer information om hur du felsöker och löser behörighetsproblem som rör ett fel i Windows-autentisering finns i PolyBase-tjänstkontobehörigheter och vanliga fel som observerats när de saknas.

Det går inte att köra frågan "Fjärrfråga"

Exempel på felmeddelande:

Msg 7320, nivå 16, delstat 110, rad 14
Det går inte att köra frågan "Fjärrfråga" mot OLE DB-providern "SQLNCLI11" för den länkade servern "(null)". Frågan avbröts– det maximala tröskelvärdet för avvisande (0 rader) uppnåddes vid läsning från en extern källa: 1 rader avvisades av totalt 1 rader som bearbetats. (/nation/sensors.ldjson.txt)Kolumnordning: 0, Förväntad datatyp: INT, Felaktigt värde: {"id":"S2740036465E2B","time":"2016-02-26T16:59:02.9300000Z","temp":23.3,"hum":0.77,"wind":17,"press":1032,"loc":[-76.90914996169623,38.8929314364726]} (Kolumnkonverteringsfel), Felmeddelande: Fel vid konvertering av datatypen NVARCHAR till INT.

Tänk på att det kan finnas härledning av det här felet. Namnet på den första avvisade filen visas i SQL Server Management Studio (SSMS) med felaktiga datatyper eller värden.

Möjlig orsak:
Orsaken till att det här felet inträffar är att varje fil har olika scheman. Den externa PolyBase-tabellens DDL läser rekursivt alla filer i en katalog när den pekar på den. När ett matchningsfel för en kolumn eller datatyp inträffar kan det här felet visas i SSMS.

Möjlig lösning:
Om datat för varje tabell består av en enda fil, använder du filnamnet i avsnittet LOCATION med katalogen som prefix för de externa filerna. Om det finns flera filer per tabell placerar du varje uppsättning filer i olika kataloger i Azure Blob Storage. Peka LOCATION till katalogen i stället för en viss fil. Den här lösningen rekommenderas.

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…);

Anmärkning

SQL Server Native Client (SNAC) levereras inte med:

  • SQL Server 2022 (16.x) och senare versioner
  • SQL Server Management Studio 19 och senare versioner

SQL Server Native Client (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny programutveckling.

Använd någon av följande drivrutiner för nya projekt:

Information om SQLNCLI som levereras som en komponent i SQL Server Database Engine (version 2012 till och med 2019) finns i det här undantaget i supportlivscykeln.

Kerberos-stöd

SQL Server har konfigurerats för åtkomst till ett Hadoop-kluster som stöds. Kerberos-säkerhet tillämpas inte i Hadoop-kluster.

Om du väljer från den externa tabellen returneras följande fel:

Msg 105019, Nivå 16, Delstat 1, Rad 55
EXTERN TABELL-åtkomst misslyckades på grund av ett internt fel: "Java-undantag utlöstes vid anrop till HdfsBridge_Connect: Fel [Kunde inte skapa instans av LoginClass] uppstod vid åtkomst till extern fil."
Msg 7320, nivå 16, delstat 110, rad 55
Det går inte att köra frågan "Fjärrfråga" mot OLE DB-providern "SQLNCLI11" för den länkade servern "(null)". EXTERN TABELL-åtkomst misslyckades på grund av ett internt fel: "Java-undantag utlöstes vid anrop till HdfsBridge_Connect: Fel [Kunde inte skapa instans av LoginClass] uppstod vid åtkomst till extern fil."

Granskning av loggfilen för DWEngine-servern visar följande fel:

[Tråd:16432] [EngineInstrumentation:EngineQueryErrorEvent] (Felmeddelande, Kritisk):
EXTERN TABELLåtkomst misslyckades på grund av ett internt fel: "Java-undantag uppstod vid anrop till HdfsBridge_Connect: Fel [com.microsoft.polybase.client.KerberosSecureLogin] inträffade vid åtkomst till extern fil." Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: EXTERN TABELLåtkomst misslyckades på grund av ett internt fel: "Java-undantag som uppstod vid anrop till HdfsBridge_Connect: Fel [com.microsoft.polybase.client.KerberosSecureLogin] inträffade vid åtkomst till den externa filen." >--- Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException: Java-undantag som uppstod vid anrop till HdfsBridge_Connect: Fel [com.microsoft.polybase.client.KerberosSecureLogin] inträffade vid åtkomst till den externa filen.

Möjlig orsak:
Kerberos är inte aktiverat i Hadoop-kluster, men Kerberos-säkerhet är aktiverat i core-site.xml, yarn-site.xmleller hdfs-site.xml som finns som standard under Program Files\Microsoft SQL Server\MSSQL13. MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf. I Linux finns filerna som standard i /var/opt/mssql/binn/polybase/hadoop/conf/.

Möjlig lösning:
Kommentera ut Kerberos-säkerhetsinformationen från ovan nämnda filer.

Mer information om felsökning av PolyBase och Kerberos finns i Felsöka PolyBase Kerberos-anslutning.

Internt frågeprocessorfel

Om du kör frågor mot en extern tabell returneras följande fel:

Msg 8680, nivå 17, delstat 5, rad 118
Internt frågeprocessorfel: Frågeprocessorn påträffade ett oväntat fel under bearbetningen av en fjärrfrågefas.

DWEngine-serverloggen innehåller följande meddelanden:

[Tråd:5216] [ControlNodeMessenger:ErrorEvent] (Fel, hög): ***** DMS-systemet har frånkopplade noder:
[Tråd:5216] [ControlNodeMessenger:ErrorEvent] (Fel, hög): ***** DMS-systemet har frånkopplade noder:
[Tråd:5216] [ControlNodeMessenger:ErrorEvent] (Fel, hög): ***** DMS-systemet har frånkopplade noder:

Möjlig orsak:
Orsaken till det här felet kan vara att SQL Server inte startades om efter konfigurationen av PolyBase.

Möjlig lösning:
Starta om SQL Server. Kontrollera DWEngine Server Log för att bekräfta att det inte finns några DMS-frånkopplingar efter omstarten.

Användare som behövs för HDFS-åtkomst

Scenario:
SQL Server är anslutet till ett osäkert Hadoop-kluster (Kerberos är inte aktiverat). PolyBase har konfigurerats för att skicka beräkningen till Hadoop-klustret.

Exempelfråga:

select count(*) from foo WITH (FORCE EXTERNALPUSHDOWN);

Ett felmeddelande som liknar följande returneras:

Msg 105019, nivå 16, delstat 1, rad 1
Extern tabellåtkomst misslyckades på grund av internt fel: 'Java-undantag som uppstod vid anrop till JobSubmitter_PollJobStatus: Fel [java.net.ConnectException: Samtal från big1506sql2016/172.16.1.4 till 0.0.0.0:10020 misslyckades vid anslutningsfel: java.net ConnectException: Anslutningen nekades: ingen ytterligare information; Mer information finns i: http://wiki.apache.org/hadoop/ConnectionRefused] inträffade vid åtkomst till en extern fil.'
OLE DB-providern "SQLNCLI11" för den länkade servern "(null)" returnerade meddelandet "Ospecificerat fel".
Msg 7421, nivå 16, delstat 2, rad 1
Det går inte att hämta raduppsättningen från OLE DB-providern "SQLNCLI11" för den länkade servern "(null)". .

Hadoop Yarn-loggfelmeddelande

Jobbkonfigurationen misslyckades: org.apache.hadoop.security.AccessControlException: Åtkomst nekad: användare=pdw_user, access=WRITE, inode="/user":hdfs:hdfs:drwxr-xr-x på org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:265) på org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:251) på org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:232) på org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:176) på org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5525)

Möjlig orsak:
När Kerberos är inaktiverat använder PolyBase pdw_user som användare för att komma åt HDFS och skicka MapReduce-jobb.

Möjlig lösning:
Skapa pdw_user på Hadoop och ge den tillräcklig behörighet till de kataloger som används under mapreduce-bearbetning. Kontrollera också att pdw_user är ägare till katalogen /user/pdw_user HDFS.

Nedan visas ett exempel på hur du skapar hemkatalog och tilldelar behörigheter för pdw_user:

sudo -u hdfs hadoop fs -mkdir /user/pdw_user
sudo -u hdfs hadoop fs -chown pdw_user /user/pdw_user

Efter detta kontrollerar du att pdw_user har läs-, skriv- och körningsbehörigheter för katalogen /user/pdw_user. Kontrollera att katalogen /tmp har 777 behörigheter.

Mer information om felsökning av PolyBase och Kerberos finns i Felsöka PolyBase Kerberos-anslutning.

Java-minnesfel på grund av UTF-8

Scenario:
SQL Server PolyBase har konfigurerats med Hadoop-kluster eller Azure Blob Storage. En Select-fråga misslyckas med följande fel:

Msg 106000, nivå 16, delstat 1, rad 1
Java-heaputrymme

Möjlig orsak:
Ogiltiga indata kan orsaka ett Java OutOfMemoryError. Filen kanske inte är i UTF-8-format. DMS försöker läsa hela filen som en rad eftersom den inte kan avkoda radavgränsaren och körs in i ett Java heap-utrymmesfel.

Möjlig lösning:
Konvertera filen till UTF-8-format eftersom PolyBase för närvarande kräver UTF-8-format för textavgränsade filer.

Konfiguration av Hadoop-anslutning

Om du konfigurerar SQL Server PolyBase för att ansluta till Azure Blob Storage returneras följande felmeddelande i SQL Server:

Msg 105019, nivå 16, delstat 1, rad 74
Åtkomst till extern tabell misslyckades på grund av ett internt fel: "Java-undantag som uppstod vid anrop till HdfsBridge_Connect: Fel [Inget filsystem för schema: wasbs] inträffade vid åtkomst till extern fil."

Möjlig orsak:
Hadoop-anslutningen är inte inställd på konfigurationsvärdet för åtkomst till Azure Blob Storage.

Möjlig lösning:
Ange Hadoop-anslutningen till ett värde (helst 7) som stöder Azure Blob Storage och startar om SQL Server. En lista över anslutningsvärden och typer som stöds finns i PolyBase-anslutningskonfiguration.

Skapa tabell som välj-fel

Scenario:
Det går inte att exportera data till Azure Blob Storage eller Hadoop-filsystemet med polybase med CETAS-syntaxen (CREATE EXTERNAL TABLE AS SELECT) från SQL Server med följande felmeddelande:

Msg 156, Nivå 15, Tillstånd 1, Rad 177
Felaktig syntax nära nyckelordet "WITH".
Msg 319, nivå 15, delstat 1, rad 177
Felaktig syntax nära nyckelordet "med". Om den här instruktionen är ett vanligt tabelluttryck, en xmlnamespaces-sats eller en kontextsats för ändringsspårning måste den föregående instruktionen avslutas med ett semikolon.

Möjlig orsak:
När du exporterar data till Hadoop eller Azure Blob Storage via PolyBase exporteras endast data, inte kolumnnamnen (metadata) enligt definitionen i kommandot CREATE EXTERNAL TABLE.

Möjlig lösning:
Skapa den externa tabellen först och använd sedan INSERT INTO SELECT för att exportera till den externa platsen. Ett kodexempel finns i PolyBase-frågescenarier.

Det går inte att skapa en extern tabell från Azure Blob Storage

Scenario:
Dedikerad SQL-pool (tidigare SQL DW) har konfigurerats för att importera data från Azure Blob Storage. Det går inte att skapa en extern tabell med följande meddelande.

Msg 105019, nivå 16, delstat 1, rad 34
Den externa TABLE-åtkomsten misslyckades på grund av ett internt fel: "Java-undantag som uppstod vid anrop till HdfsBridge_IsDirExist. Java-undantagsmeddelande:com.microsoft.azure.storage.StorageException: Servern kunde inte autentisera begäran. Kontrollera att värdet för auktoriseringshuvudet har skapats korrekt, inklusive signaturen.: Fel [com.microsoft.azure.storage.StorageException: Servern kunde inte autentisera begäran. Kontrollera att värdet för auktoriseringsrubriken har skapats korrekt, inklusive signaturen.] inträffade vid åtkomst till den externa filen."

Möjlig orsak:
Fel Azure-lagringsnyckel användes för att skapa databasens begränsade autentiseringsuppgifter.

Möjlig lösning:
Släpp alla relaterade objekt (t.ex. datakälla, filformat) och släpp och återskapa sedan databasens begränsade autentiseringsuppgifter med rätt lagringsnyckel.

Kerberos-konfiguration kapitalisering

Scenario:
SQL Server har konfigurerats med Kerberos-aktiverat Cloudera-kluster. SQL Server har startats om efter alla konfigurationsändringar. PolyBase Engine- och PolyBase Data Movement-tjänster körs efter omstart. Följande felmeddelanden returneras:

Datakälla som konfigurerats utan plats för jobbspåraren:

org.apache.hadoop.fs.FileSystem: Provider org.apache.hadoop.fs.viewfs.ViewFileSystem kunde inte instansieras

Datakälla konfigurerad med jobbspårarplats:

Fel [Det går inte att hämta Kerberos-sfären] inträffade vid åtkomst till extern fil

Möjlig orsak:
Värdet för egenskapen "hadoop.security.authentication" anges till kerberos i CoreSite.xml.

Möjlig lösning:
Coresite.xml-filens egenskap "hadoop.security.authentication" ska vara KERBEROS (alla versaler) som värde.

Mer information om felsökning av PolyBase och Kerberos finns i Felsöka PolyBase Kerberos-anslutning.

Mapred-site.xml saknade nödvändiga värden

Scenario:
SQL Server eller APS har konfigurerats med HDP-kluster som stöds. Frågor som inte kräver pushdown-arbete, men misslyckas med följande meddelande när "FORCE PUSHDOWN"-tips används med följande felmeddelanden:

Msg 7320, nivå 16, delstat 110, rad 35
Det går inte att köra frågan "Fjärrfråga" mot OLE DB-providern "SQLNCLI11" för den länkade servern "(null)". EXTERN TABELlåkomst misslyckades på grund av ett internt fel: Java-undantag uppstod vid anrop till JobSubmitter_PollJobStatus: Fel [org.apache.hadoop.ipc.RemoteException(java.lang.NullPointerException): java.lang.NullPointerException
på org.apache.hadoop.mapreduce.v2.hs.HistoryClientService$HSClientProtocolHandler.getTaskAttemptCompletionEvents(HistoryClientService.java:277)
på org.apache.hadoop.mapreduce.v2.api.impl.pb.service.MRClientProtocolPBServiceImpl.getTaskAttemptCompletionEvents(MRClientProtocolPBServiceImpl.java:173)
på org.apache.hadoop.yarn.proto.MRClientProtocol$MRClientProtocolService$2.callBlockingMethod(MRClientProtocol.java:283)
på org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
på org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2127)
på org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2123)
på java.security.AccessController.doPrivileged(Native Method)
på javax.security.auth.Subject.doAs(Subject.java:415)
på org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
på org.apache.hadoop.ipc.Server$Handler.run(Server.java:2121)
] inträffade vid åtkomst till den externa filen."

Möjlig orsak:
Mapred-site.xml saknar några nödvändiga värden som söker efter mellanliggande och slutresultat.

Möjlig lösning:
Lägg till följande egenskaper och associera dessa med rätt värden som visas på Ambari i filen mapred-site.xml på 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>

Konfigurera åtkomst med värdnamn

Scenario:
SQL Server har konfigurerats för åtkomst till ett Hadoop-kluster som stöds. Om du skapar en extern tabell returneras något av följande fel:

Det går inte att köra frågan "Fjärrfråga" mot OLE DB-providern "SQLNCLI11" för den länkade servern "(null)". 110802; Ett internt DMS-fel uppstod som gjorde att åtgärden misslyckades. Information: Undantag: Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DmsSqlNativeException, Meddelande: SqlNativeBufferReader.Run, fel i OdbcExecuteQuery: SqlState: 42000, NativeError: 8680, "Error calling: SQLExecDirect(this-GetHstmt>(), (SQLWCHAR *)statementText, SQL_NTS), SQL return code: -1 | SQL-felinfo: SrvrMsgState: 26, SrvrSeverity: 17, Fel <1>: ErrorMsg: [Microsoft][ODBC Driver 13 för SQL Server][SQL Server]Internt frågeprocessorfel: Frågeprocessorn stötte på ett oväntat fel vid bearbetningen av en fas för fjärrfrågor. | Fel vid anrop: pReadConn-ExecuteQuery>(statementText, bufferFormat) | state: FFFF, number: 24, active connections: 8', Connection String: Driver={pdwodbc}; APP=RCSmall-DmsNativeReader:WAD1D16HD2001\mpdwsvc (3600)-ODBC-PoolId1433; Trusted_Connection=ja; Autotranslate=no; Server=\.\pipe\sql\query

[Tråd:30544] [AbstractReaderWorker:ErrorEvent] (Fel, hög): QueryId QID2433 PlanId 6c3a4551-e54c-4c06-a5ed-a8733edac691 StepId 7:
Det gick inte att hämta block: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: Det gick inte att hämta block: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/00000_0
på Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsBridgeReadAccess.Read(MemoryBuffer buffer, Boolean& isDone)
på Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DataReader.ExternalMoveBufferReader.Read()
på Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.ReadAndSendData()
på Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.Execute(Object status)

Möjlig orsak:
Det här felmeddelandet kan visas när Hadoop-klustret har konfigurerats i en konfiguration där datanoder endast är tillgängliga utanför klustret med hjälp av värdnamnet och inte IP-adressen.

Möjlig lösning:
Lägg till följande i hdfs-site.xml fil på klientsidan (SQL Server). Den här konfigurationen tvingar namnnoden att returnera en URI för datanoderna med värdnamnet i stället för den interna IP-adressen.

<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>

Mapporganisation orsakar minnesöverbelastning

Scenario:
SQL Server kör en PolyBase-fråga i en katalog med ett stort antal filer (>30 000 filer under katalogsökvägen rekursivt) och ett av följande felmeddelanden returneras:

Msg 105019, nivå 16, delstat 1, rad 1
EXTERN TABELLåtkomst misslyckades på grund av ett internt fel: "Java-undantag utlöstes vid anrop till HdfsBridge_GetFileNameByIndex. Java-undantagsmeddelande: GC:s omkostnadsgräns överskreds: Fel [GC-omkostnadsgränsen överskreds] inträffade vid åtkomst till den externa filen."

Msg 105019, Nivå 16, Tillstånd 1, Rad 1
EXTERN TABELLåtkomst misslyckades på grund av ett internt fel: "Java-undantag utlöstes vid anrop till HdfsBridge_GetDirectoryFiles. Java-undantagsmeddelande: Java-heaputrymme: Fel [Java-heaputrymme] inträffade vid åtkomst till den externa filen."

Möjlig orsak:
När du bearbetar en sökväg räknar PolyBase upp alla filer under den sökvägen och det finns fasta minneskostnader som är associerade med den datastruktur som används för att representera filerna. Med ett stort antal filer blir den här kostnaden märkbar och kan så småningom förbruka allt minne som är tillgängligt för JVM.

Möjlig lösning:
Ordna om data i flera kataloger så att varje katalog innehåller en delmängd filer och sedan dela upp frågan i flera som fungerar på en del av den ursprungliga sökvägen i taget och materialisera tabellerna som SQL Server-tabeller (innan du ansluter dem).

Exempel: Anta att dina externa tabelldata finns på följande plats: Beställningar/file1.txt,...,file30K.txt.

Ändra layouten så att data anges i en konventionell filpartitionsstruktur i Orders/åååå/mm/dd/file1.txt. Ange en lägre katalognivå för den externa tabellen, såsom en underkatalog per månad(mm) eller dag(dd), och importera filerna till SQL Server-tabeller i bitar, för att så småningom lägga till dem i en sammanställd tabell. Även om du hade rätt katalogstruktur till att börja med följer du steg 2 för att kunna arbeta med så många filer utan att JVM-minnet tar slut.

Oväntade tecken i konfigurationsfiler

Scenario:
Konfigurera SQL Server eller APS med ett Hadoop-kluster, vilket innebär att ändra yarn-site.xml, hdfs-site.xmloch andra konfigurationsfiler. Följande SQL Server-felmeddelande observeras:

Msg 105019, nivå 16, delstat 1, rad 1
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: Åtkomst till extern tabell misslyckades på grund av ett internt fel: Java-undantag som uppstod vid anropet till HdfsBridge_Connect. Java-undantagsmeddelande:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Ogiltig byte 1 av 1-byte UTF-8-sekvens.: Fel [com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Ogiltig byte 1 av 1-byte UTF-8 sekvens.] inträffade vid åtkomst till den externa filen." --->

Möjlig orsak:
Detta kan inträffa om du har kopierat och klistrat in text i konfigurationsfiler från en webbplats eller ett chattfönster. Det är möjligt att oönskade/otryckbara tecken finns i konfigurationsfilerna.

Möjlig lösning:
Öppna filerna i en annan textredigerare (förutom anteckningar) och leta efter dessa tecken och eliminera dem. Starta om de nödvändiga tjänsterna.

Deltatabellfrågan kan misslyckas med felen 2571 och 16513

Scenario:
Du kan stöta på följande fel när du kör frågor mot en extern Delta-tabell:

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.

Möjlig orsak:
Detta kan inträffa eftersom det finns ett QUERYTRACEON frågetips som kan läggas till i deltafilens metadatafråga och som kräver att sysadmin serverrollen används för att utföra.

Möjlig lösning:
Om detta inträffar kan du lösa problemet genom att globalt aktivera spårningsflaggan 14073, vilket förhindrar att frågetipset läggs till.

Se även